zoukankan      html  css  js  c++  java
  • SAMBA

    SAMBA介绍

    	SMB(Server Message Block)服务器消息块,IBM 发布,最早是DOS网络文件共享,也称为SAMBA,SAMBA使用的是NetBIOS通讯协议。
    	NetBIOS(Network Basic Input/Output System)
    		网络的基本输入输出系统,它定义了一种软件接口以及在应用程序和连接介质之间提供通信接口的标准方法,作用是为局域网提供网络以及其他特殊功能。
    		目前使用NetBIOS协议来获得局域网中计算机的名称来解析成IP地址实现数据的通信。
    		SAMBA通过NetBIOS协议来获取对方主机的NetBIOS name进而来定位该主机所在位置,然后根据对方的主机赋予的权限来存取可用的资源。
    		实际中SAMBA是通过两个服务来控制这两个步骤的,即nmb和smb两个服务。
    			nmb是用来管理工作组合NetBIOS name解析,主要是通过UDP的137和138两个端口来负责名称解析任务。
    			smb主要用来管理SAMBA主机所分享的目录、文件或打印机等,主要使用TCP协议的139和445两个端口进行数据的传输。
    	Cifs(common internet file system),微软基于SMB 发布,最简单的实现就是window的网上邻居
    	SAMBA:
    		1991 年Andrew Tridgell, 实现windows 和UNIX 相通
    	SAMBA 的功能:
    		共享文件和打印,实现在线编辑 
    		实现登录SAMBA 用户的身份认证
    		可以进行NetBIOS 名称解析
    		外围设备共享
    	计算机网络管理模式:
    		工作组WORKGROUP:计算机对等关系,帐号信息各自管理
    		域DOMAIN:C/S 结构,帐号信息集中管理,DC,AD
    	SAMBA的相关包:
    		Samba   提供smb服务
    		Samba-client  客户端软件
    		samba-common   通用软件
    		cifs-utils   smb客户端工具
    		samba-winbind   和AD相关
    
    	相关服务进程:
    		smbd 提供smbd(cifs)服务 TCP:139,445
    		nmbd NetBIOS 名称解析 UDP:137,138
    
    	主配置文件:
    		/etc/samba/smb.conf
    		帮助参看:
    			man smb.conf
    			
    	语法检查: 
    		testparm [-v] [/etc/samba/smb.conf]
    
    	客户端工具:
    		smbclient
    	mount.cifs
    

    SAMBA配置

    SAMBA的相关包

    	Samba   提供smb服务
    	Samba-client  客户端软件
    	samba-common   通用软件
    	cifs-utils   smb客户端工具
    	samba-winbind   和AD相关
    

    SAMBA服务器配置

    	主配置文件:
    		/etc/samba/smb.conf
    		帮助参看:
    			man smb.conf
    		smb.conf 继承了.ini文件的格式,用[ ]分成不同的部分。
    	全局设置:
    		[global]  服务器通用或全局设置的部分
    	特定共享设置:
    		[homes]  用户的家目录共享
    			comment = Home Directories	描述信息
    			browseable = no	用户的家目录是否允许访问,这里通常设置为no
    			writable = yes	是否允许写入内容
    			valid users = %S	
    			valid users = MYDOMAIN\%S	
    		[printers]  定义打印机资源和服务
    		[sharename]  自定义的共享目录配置
    			paht=/PATH/TO/SHARE_DIRECTORY	共享内容路径
    			comment=Comment String	描述信息
    			guest ok ={yes|no}	是否允许访客访问
    			public = {yes|no}	是否公开,与guest ok类似
    			writable = {yes|no}	是否可写
    			read only = {yes|no}	是否只读
    			write list = +group_name	用户指明可写的用户列表,这里的+表示加组名,表示组里面的用户可以写
    	# 和; 
    		以此开头的语句为注释,大小写不敏感
    	宏定义:
    		%m  	客户端主机的NetBIOS名 
    		%M  	客户端主机的FQDN
    		%H  	当前用户家目录路径 
    		%U  	当前用户用户名
    		%g  	当前用户所属组 
    		%h   	samba 服务器的主机名
    		%L   	samba 服务器的NetBIOS名  
    		%I  	客户端主机的IP
    		%T  	当前日期和时间 %S 可登录的用户名
    	全局内的配置:
    		workgroup  	指定工作组名称
    		server string  	主机注释信息
    		netbios name  	指定NetBIOS名 名
    		interfaces  	指定服务侦听接口和IP
    		hosts allow  	可用“ “,”  ,空格,或tab 分隔,默认允许所有主机访问 , 也可在每个共享独立配置,如在[global] 设置,将应用并覆盖所有共享设置
    			IPv4 network/prefix: 172.25.0.0/24 IPv4 前缀: 172.25.0.
    			IPv4 network/netmask: 172.25.0.0/255.255.255.0
    			主机名: desktop.example.com
    			        以example.com后缀的主机名: .example.com
    			示例:
    			        hosts allow = 172.25.
    			        hosts allow = 172.25. .example.com
    		hosts deny 	拒绝指定主机访问
    		config file=/etc/samba/conf.d/%U 	用户独立的配置文件
    		Log file=/var/log/samba/log.%m  	不同客户机采用不同 日志
    		max log size=50 	日志文件达到50K ,将轮循rotate, 单位KB
    		passdb backend = tdbsam  	密码数据库格式
    		Security 三种认证方式:
    			share :	匿名(CentOS7 不再支持)
    			user :	samba用户(采有linux 用户,samba 的独立口令)
    			domain: 	使用DC(DOMAIN CONTROLLER) 认证
    		实现samba 用户:
    			包:samba-common-tools
    			工具:smbpasswd pdbedit
    			samba 用户须是Linux 用户,建议使用/sbin/nologin
    	语法检查:
    		testparm
    			testparm - check an smb.conf configuration file for internal correctness
    			testparm [OPTION...] <config-file> [host-name] [host-ip]
    				-s, --suppress-prompt           	禁止输入提示
    				-v, --verbose                   	同时显示默认选项
    				-l, --skip-logic-checks         	跳过全局检查
    				--show-all-parameters           	显示参数类型和可能值
    				--parameter-name=STRING         	将testparm限制为命名参数
    				--section-name=STRING           	将testparm限制为命名节
    				--usage                         	显示简短的有用消息
    				-d, --debuglevel=DEBUGLEVEL     	设置调试水平
    				--option=name=value             	从命令行设置smb.conf选项
    

    管理SAMBA用户

    	前提:
    		samab用户必须是系统中已经存在的用户
    	添加samba 用户
    		smbpasswd -a <user>
    		pdbedit -a -u <user>
    	修改用户密码
    		smbpasswd <user>
    	删除用户和密码 :
    		smbpasswd –x <user>
    		pdbedit –x –u <user>
    	查看samba 用户列表 :
    		/var/lib/samba/private/passdb.tdb
    		pdbedit –L –v
    	查看samba 服务器状态
    		smbstatus
    

    配置目录共享

    	每个共享目录应该有独立的[ ] 部分
    		[共享名称]  	远程网络看到的共享名称
    		comment  	注释信息
    		path 	所共享的目录路径
    		public  	能否被guest 访问的共享,默认no ,和guest ok 类似
    		browsable 	是否允许所有用户浏览此共享, 默认为yes,no 为隐藏
    		writable=yes  	可以被所有用户读写,默认为no
    		read only=no  和writable=yes 等价	如与以上设置冲突,放在后面的设置生效,默认只读
    		write list  	三种形式:
    			用户,@ 组名,+ 组名, 用,分隔
    			如writable=no ,列表中用户或组可读写,不在列表中用户只读
    		valid users 	特定用户才能访问该共享,如为空,将允许所有用户,用户名之间用空格分隔
    

    基本特定用户和组的共享

    	vim /etc/samba/smb.conf
    		[share]
    		path = /app/dir
    		valid users=wang,@admins
    		writeable = no
    		browseable = no
    

    SMB客户端访问

    	UNC路径: Universal Naming Convention, 通用命名规范
    		格式:\sambaserversharename
    	终端下使用smbclient 登录服务器
    		smbclient -L instructor.example.com
    		smbclient -L instructor.example.com -U wang
    			> cd directory
    			> get file1
    			> put file2
    		smbclient //instructor.example.com/shared -U wang
    			可以使用-U 选项来指定用户% 密码,或通过设置和导出USER和PASSWD环境变量来指定
    

    挂载CIFS文件系统

    	手动挂载
    		mount -t cifs -o user=wang,password=magedu //server//shared /mnt/smb
    	开机自动挂载
    		cat /etc/fstab  可以用文件代替用户名和密码的输入
    			//server/homes /mnt cifs credentials=/etc/smb.txt 0 0
    		cat /etc/smb.txt
    			username=wang
    			password=password
    		 chmod 600 /etc/smb.txt
    

    实现SMB共享

    	一、在samba 服务器上安装samba包 
    		yum -y install samba
    	二、创建samba 用户和组
    		groupadd -r admins
    		useradd -s /sbin/nologin -G admins wang
    		smbpasswd -a wang
    		useradd -s /sbin/nologin mage
    		smbpasswd -a mage
    	三、创建samba 共享目录, 并设置SElinux
    		mkdir /testdir/smbshare
    		chgrp admins /testdir/smbshare
    		chmod 2775 /testdir/smbshare
    		semanage fcontext -a -t samba_share_t '/testdir/smbshare(/.*)?'
    		restorecon -vvFR /testdir/smbshare
    	四、samba 服务器配置
    		vim /etc/samba/smb.conf
    			security = user
    			passdb backend = tdbsam
    			[share]
    			path = /testdir/smbshare
    			write list = @admins
    		systemctl start smb nmb
    		systemctl enable smb nmb
    		firewall-cmd --permanent --add-service=samba
    		firewall-cmd --reload
    	 五、samba 客户端访问
    		安装包
    			yum -y install cifs-utils
    		用wang 用户挂载smb 共享并访问
    			mkdir /mnt/wang
    			mount -o username=wang //smbserver/share /mnt/wang
    			echo "Hello wang" >/mnt/wang/wangfile.txt
    		用mage 用户 挂载smb 共享并访问
    			mkdir /mnt/mage
    			mount -o username=mage //smbserver/share /mnt/mage
    			touch /mnt/mage/magefile.txt
    

    多用户SMB挂载

    	SAMBA 共享默认只支持同时用一个用户挂载SMB 共享
    	CentOS7 中可启用多用户挂载功能
    		客户端挂载samba 共享目录后,在客户端登录的不同用户访问同一个samba的挂载点,可获得不同权限。
    	
    	一、samba 服务器配置
    		yum install samba
    		mkdir /multiuser
    		vim /etc/samba/smb.conf
    			[smbshare]
    			path=/multiuser
    			writable=no
    			write list= @admins
    	二、samba 服务器创建samba 用户
    		useradd –s /sbin/nologin smbuser
    		smbpasswd –s smbuser
    		useradd –s /sbin/nologin –G admins wang
    		smbpasswd –a wang
    		useradd –s /sbin/nologin mage
    		smbpasswd –a mage
    	三、samba 服务器设置目录权限和SELinux对wang,admins 组分配目录读写权限
    		chmod 777 /testdir/multiuser
    		或者
    		setfacl –m u:wang:rwx /testdir/multiuser
    		setfacl –m g:admins:rwx /testdir/multiuser
    		设置SELinux 标签:
    			semanage fcontext -a -t samba_share_t '/testdir/multiuser (/.*)?'
    			restorecon /testdir/multiuser
    	四、samba 客户端启用多用户挂载
    		yum -y install cifs-utils
    		mkdir /mnt/smb
    		echo 'username=smbuser' >/etc/multiuser
    		echo 'password=centos' >>/etc/multiuser
    		chmod 600 /etc/multiuser
    		以多用户方式挂载:
    			vim /etc/fstab
    				//smbserver/smbshare /mnt/smb cifs credentials=/etc/multiuser,multiuser,sec=ntlmssp 0 0
    		mount -a
    	五、在samba 客户端用实现多用户访问
    		useradd wang;useradd mage
    		用root 访问
    			ls /mnt/smb; touch /mnt/smb/root.txt
    		用wang 访问
    			ls /mnt/smb; touch /mnt/smb/wang.txt
    			cifscreds add –u wang smbserver
    			touch /mnt/smb/wang.txt
    		用mage 访问
    			cifscreds add –u mage smbserver
    			ls /mnt/smb
    			touch /mnt/smb/mage.txt
    

    实现图形化管理

    	一、在CentOS6( 第二张光盘) 上安装包
    		yum install samba-swat
    	二 、配置swat 服务
    		vim /etc/xinetd.d/swat
    		disable = no
    		port = 901
    		only_from = 127.0.0.1  此行改成172.16.0.0/16
    		service xinetd restart
    	三 、浏览器访问管理
    		http://127.0.0.1:901  以root 用户登录
    		注意:commit changes 后会自动重新加载配置,且自动将/etc/samba/smb.conf
    

    相关SELinux 配置

    	SMB 共享目录应设为samba_share_t 安全上下文
    	semanage fcontext -a -t samba_share_t '/sharedpath(/.*)?'
    	restorecon -vvFR /sharedpath
    	SMB设共享目录安全上下文也可设 public_content_t ( 只读)和public_content_rw_t ( 读写).
    	要支持读写,SElinux 布尔值smbd_anon_write 必须启用
    	如用SMB 网络共享samba 服务器上的用户家目录,需在samba 服务器上启用布尔值samba_enable_home_dirs
    	如需挂载远程SMB 目录做为本地用户家目录,需在SMB 客户机上启用布尔值use_samba_home_dirs
    
  • 相关阅读:
    BottomNavigationView3个项以上不显示文字的问题
    ViewPager中height=wrap_content无效,ScrollView里边用ListView显示不全解决办法
    Gson解析
    Parcelable Android SDK提供,基于内存,读写高于硬盘
    Serializable序列化 && 坑
    OpenStack中添加Floating IP
    Hadoop
    Redis
    ELK
    OpenStack
  • 原文地址:https://www.cnblogs.com/shenxm/p/8459205.html
Copyright © 2011-2022 走看看