Samba 用于搭建文件服务器实现文件的上传、下载、资源共享, 共享目录多用户访问权限设置; 工作端口 139/TCP、445/TCP
环境介绍
samba-4.10.4
centos7 min x64
服务端
# 安装并启动
yum -y install samba
systemctl start smb
# 禁用 selinux
sed -i 's/=enforcing/=disabled/g' /etc/selinux/config
# 关闭防火墙
firewall-cmd --add-service samba --permanent
firewall-cmd --reload
# 创建共享目录、添加用户组、用户 public
groupadd samba && useradd -g samba -d /home/public -s /sbin/nologin public
# 设置用户 public 对应的 smb 密码 123
pdbedit -a -u public
# 添加公共共享模块
[public]
comment = Public Directories
valid users = @samba
read only = Yes
path = /home/public
hosts allow = 192.168.
添加个人用户目录
useradd -d /home/kevin -s /sbin/nologin kevin # 添加系统用户
pdbedit -a -u kevin # 将系统用户 kevin 添加至 samba 账号信息库, 并设置密码
cat /etc/samba/smb.conf
[kevin]
comment = please do not modify it all will
path= /home/kevin
writable = yes
public = no
配置参数
[kevin] # 共享文件夹标识
comment = this a desc # 对该共享的描述
path = /home/kevin # 共享的路径
writable = yes # 该共享目录是否可写
write list = gavin # 该共享目录可写用户列表
public = no # 是否公开
browseable = no # 共享文件夹是否可浏览
valid users = @samba # 允许访问的用户组
hosts allow = 192.168. # 指定允许访问的客户端 IP 地址
valid users = gavin,@samba,colin # 运行访问该共享的用户或组
invalid users = chris # 禁止访问该共享的用户或组
admin users = kevin, colin # 该共享的管理者,具有完全访问权限
samba 账号管理命令 pdbedit
pdbedit -x -u kevin # 删除
pdbedit -L # 查看samba 账号列表
客户端
Linux 端
# 创建挂载点 并挂载
mkdir /data/{gavin,kevin}
mount -t cifs //192.168.31.33/kevin /data/kevin -o "username=kevin,password=123"
# 查看挂载情况
df -h
# 永久挂载
vim /etc/fstab
//192.168.31.33/gavin /data/gavin cifs rw username=gavin,password=123 0 0
# 卸载挂载点
umount /data/gavin
Win7 端
# 访问共享目录
\\192.168.31.33
或 \\192.168.31.33\gavin
# 共享目录 映射网络驱动器
右键共享目录 --> 映射网络驱动器 --> 完成,这样就将 samba 共享目录通过网络驱动器的方式保存到本地了
# 调试
net use # 查看网络链接
net user * /del # 清除所有网络链接
多用户权限控制
通过设置多个用户的家目录为共享目录 /data/samba, 针对每个用户在该共享目录下设置同名目录并授权、可实现各用户目录的访问控制
-
添加用户 samba
useradd -s /sbin/nologin samba -g samba
mkdir /data/samba -p && chown samba.samba -R /data/samba/ -
添加用户 user1 user2 user3
useradd -d /data/samba -s /sbin/nologin user1
useradd -d /data/samba -s /sbin/nologin user2
useradd -d /data/samba -s /sbin/nologin user3 -
设置 samba 用户密码
pdbedit -a -u user1
pdbedit -a -u user2
pdbedit -a -u user3 -
不同用户创建对应子目录及设置权限
mkdir /data/samba/user1 && chown user1.user1 -R /data/samba/user1 && chmod -R 700 /data/samba/user1
mkdir /data/samba/user2 && chown user2.user2 -R /data/samba/user2 && chmod -R 700 /data/samba/user2
mkdir /data/samba/user3 && chown user3.user3 -R /data/samba/user3 && chmod -R 700 /data/samba/user3 -
授权user1 可读 /data/samba/user3, user2 可读写 /data/samba/user3
setfacl -R -m u:user1:rx /data/samba/user3
setfacl -R -m u:user2:rwx /data/samba/user3 -
Samba 共享配置
[公司共享目录]
comment = "公司共享目录下的账号权限"
path= /data/samba
public = no
printable = no
browseable = no
valid users = user1,user2,user3,@samba
write list = user1,user2,user3
效果: 不同用户可读写跟自己同名的目录外, user1 可读目录 user3, user2 可读写目录 user3
browseable = no 该共享目录不可见, 但以 user1 或 user2 或 user3 登录后可见同名的共享目录(包含公司共享目录下的所有子目录)
补充
文件访问权限控制
setfacl -R -m u:user1:rx /data/samba/user3
setfacl -R -m u:user2:rwx /data/samba/user3
getfacl /data/samba/user3
参考
共享目录的多用户权限设置案列
https://www.cnblogs.com/kevingrace/p/5569993.html