1. 安装samba
yum -y install samba samba-client
2. 配置
进入samba配置目录
cd /etc/samba/
备份smb.conf
cp smb.conf smb.conf.bak
3. 修改后的smb.conf
[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = Samba
security = user
map to guest = Bad User
passdb backend = tdbsam[Home]
comment = home
path = /home/files
public = no
admin users = user
valid users = user
writeable = yes
create mask = 0750
directory mask = 0750
这里写了两个标签 [global] / [Home]。[global] 配置的是一些全局的属性,不需要去动他。
关于 [global] 有两个地方需要注意:
1. security = user
说明:设置用户访问Samba Server的验证方式,一共有四种验证方式。
1. share:用户访问Samba Server不需要提供用户名和口令, 安全性能较低。
2. user:Samba Server共享目录只能被授权的用户访问,由Samba Server负责检查账号和密码的正确性。账号和密码要在本Samba Server中建立。
3. server:依靠其他Windows NT/2000或Samba Server来验证用户的账号和密码,是一种代理验证。此种安全模式下,系统管理员可以把所有的Windows用户和口令集中到一个NT系统上,使用 Windows NT进行Samba认证, 远程服务器可以自动认证全部用户和口令,如果认证失败,Samba将使用用户级安全模式作为替代的方式。
4. domain:域安全级别,使用主域控制器(PDC)来完成认证。
2. passdb backend = tdbsam
说明:passdb backend就是用户后台的意思。目前有三种后台:smbpasswd、tdbsam和ldapsam。sam应该是security account manager(安全账户管理)的简写。
1.smbpasswd:该方式是使用smb自己的工具smbpasswd来给系统用户(真实用户或者虚拟用户)设置一个Samba密码,客户端就用这个密码来访问Samba的资源。smbpasswd文件默认在/etc/samba目录下,不过有时候要手工建立该文件。
2.tdbsam: 该方式则是使用一个数据库文件来建立用户数据库。数据库文件叫passdb.tdb,默认在/etc/samba目录下。passdb.tdb用户数据库 可以使用smbpasswd –a来建立Samba用户,不过要建立的Samba用户必须先是系统用户。我们也可以使用pdbedit命令来建立Samba账户。pdbedit命令的 参数很多,我们列出几个主要的。
pdbedit –a username:新建Samba账户。
pdbedit –x username:删除Samba账户。
pdbedit –L:列出Samba用户列表,读取passdb.tdb数据库文件。
pdbedit –Lv:列出Samba用户列表的详细信息。
pdbedit –c “[D]” –u username:暂停该Samba用户的账号。
pdbedit –c “[]” –u username:恢复该Samba用户的账号。
3.ldapsam:该方式则是基于LDAP的账户管理方式来验证用户。首先要建立LDAP服务,然后设置“passdb backend = ldapsam:ldap://LDAP Server”
关于 [Home] :
1. comment = home
指定的是打开Samba后文件夹的名称。一个 [ ] 对应Linux的一个路径和Samba的一个文件夹。
如果需要多个路径,可以创建多个 [ ] 。
2. admin users = user
说明:admin users用来指定该共享的管理员(对该共享具有完全控制权限)。在samba 3.0中,如果用户验证方式设置成“security=share”时,此项无效。
例如:admin users =david,sandy(多个用户中间用逗号隔开)。
3. valid users = user
valid users = 允许访问该共享的用户
说明:valid users用来指定允许访问该共享资源的用户。
例如:valid users = david,@dave,@tech(多个用户或者组中间用逗号隔开,如果要加入一个组就用“@组名”表示。)
4. public = yes/no
说明:public用来指定该共享是否允许guest账户访问
配置完之后不要忘记打开139 / 445 端口
samba配置完后用windows访问文件夹只能看见文件夹而看不到文件
解决方法:
主要是selinux的问题
#setenforce 0 就OK了
或者直接修改/etc/selinux/config文件
selinux一项改为disable或者Permissive就可以了,不过修改配置文件要重启系统才能生效。
需要使用samba,
需要启动服务(systemctl restart smb)
临时关闭selinux(setenforce 0)
需要配置防火墙(打开139/445端口)
firewall-cmd --permanent --add-port=139/tcp
firewall-cmd --permanent --add-port=445/tcp
并重启防火墙
systemctl enable firewalld
查看开放的端口:
firewall-cmd --list-ports
如何关闭端口:
firewall-cmd --permanent --zone=public --remove-port=139/tcp
其他属性可以参阅文章,内部非常详细:
https://www.cnblogs.com/muscleape/p/6385583.html
另一篇参考文章: