转载地址:https://blog.csdn.net/losophy/article/details/8192091
Samba的作用,让windows和linux之间进行文件共享。
1.安装Samba(centos7.4)
yum -y install samba //samba服务器会用到tcp139和445端口
2.防火墙开放
firewall-cmd --set-default-zone=public
firewall-cmd --add-service=samba
firewall-cmd --add-service=samba --permanent
3.主配置文件/etc/samba/smb.conf,重要的一些设置项的解释如下:
workgroup = MYGROUP //设置成跟windows机器的workgroup一样,才能共享文件系统。
hosts allow = 192.168.64.131或者192.168.64.0/24 //允许某个IP或者网段可以访问
hosts deny = xxx //拒绝某个IP和IP网段访问
log file = /var/log/samba/log //日志文件
max log size = 50 //日志文件大小达到50KB就回滚,回滚就是log文件满了以后会被压缩重命名,然后再新建一个log file。
security = user //默认的用户认证类型
用户认证类型有三种,分别如下:
user //默认 共享时会需要提供Samba的用户及用户密码
share //匿名访问,不需要输入用户名密码
server // 指定第三方认证机构
browseable = no(默认yes) // 意思是其他用户设置的共享目录就被隐藏了,但是可以正常访问。

4.pdbedit -L 查看成为Samba用户的信息,
5.smbpasswd可以添加系统用户为Samba用户,前提必须是系统用户才行,该命令需要安装yum -y install samba-client才会有。添加用户实例如下:
smbpasswd -a tom 回车以后输入密码就可以了,这个密码可以和该系统的用户密码不一样。
6.【printers】 //这一项设置它会自动把打印机给共享出去。
7.【home】 // 这一项设置会把家目录共享出去,但前提是需要设置一下布尔值才行,设置如下:setsebool -P samba_enable_home_dirs on
家目录共享的测试方式如下:打开windows的运行窗口,输入\192.168.64.130(samba服务器的IP地址),回车正常会跳出输入sanba内置用户的用户名和密码。
8.设置一个目录共享
第一步:mkdir /test-zz
第二步:编辑配置文件/etc/samba/smb.conf添加一下内容:
【test-zz】
path = /test-zz
hosts allow=xxxx
writable = yes //不添加默认是没有写的权限
write list = xxx //如果配置文件设置成所有人都没有写权限,那么write list的作用就是可以写的用户,逗号隔开。
第三步:保存退出修改过的配置文件,然后修改一下共享目录的上下文,实例如下:chcon -R -t samba_share_t /test-zz,注意:以后如果搭建一个服务,然后需要在客户端上往这个服务上写东西,但是写不进去,应该一次按下面的步骤来排查
1>检查配置文件是否允许写
2>检查文件系统是否允许写,例如:ls -ld /test-zz, chmod o+w /test-zz
3>检查selinux(上下文|布尔值)
第四步:重启服务systenctl restart smb,然后测试验证是不是能写
9.如果不想让所有人都可以写,有两个办法:
第一个办法,文件系统允许所有人写,配置文件改成这样
writable = no
write list = xxx //把可以写的用户添加进去
write list = +staff //允许名叫staff组的用户都可以写
第二个办法,配置文件允许所有用户写,文件系统允许个别可以写,设置例子如下,chmod o-w /zz/ //不许other对目录zz可写
setfacl -m u:tom:rwx /zz/ //允许Tom对目录zz可写
10.如果我想让某个samba用户使用特定的配置文件该怎么操作呢,如下:
在smb.conf文件中的全局部分【global】下面加入这一行
config file = /etc/samba/smb.conf.%U //意思是当使用某个用户登录的时候,如果smb.conf中这一行内容的话,则这个用户会使用smb.conf.user 这个配置文件,例如:smb.conf.tom 如果是tom用户的话,那我就使用smb.conf.tom这个配置文件。
10.配置多用户SMB挂载
客户端获取samba服务中拥有不同权限的samba用户的登录权限,比如让客户端用户tom1获取Samba用户tom的权限,让tom2获取Samba用户lduan的权限
例子如下:
第一步:mkdir /smb //smb客户端创建目录
第二步:创建一些用户tom1,tom2,tom3 //在samba客户端
第三步:yum -y install cifs* //安装一个提供加密密码的算法的工具ntlmssp
//也是客户端
第四步: mount -o username=tom,password=redhat,multiuser,sec=ntlmssp //192.168.64.130/test-zz /smb
第五步:df -hT //检查挂载上没有
第六步:客户端切换到tom1用户上
第七步:cifscreds add 192.168.64.130 -u tom //获取该IP下的samba
用户tom对共享目录test-zz的权限,cifscreds clearall是取消对客户端当前登录用户对共享目录的访问授权。
第八步:要想自动挂载,可以加入/etc/fstab中,例子如下:
//192.168.64.130/test-zz /smb cifs defaults,username=tom,password=redhat,multiuser,sec=ntlmssp 0 0
保存退出,然后mount -a 立即生效,df -hT 查看挂载上没有。注意:如果客户端机器重启了,需要mount -a一下,再用df -hT才会看到挂载的目录。