试验要求
samba服务器上有三个共享目录,分别是/data/group1、/data/group2和/data/share。有三个samba用户,分别是g1_user、g1_user和manager。
现在要求:
用户g1_user对/data/group1有读写权限、对/data/group2无访问权限、对/data/share有只读权限。
用户g2_user对/data/group2有读写权限、对/data/group1无访问权限、对/data/share有只读权限。
用户manager对/data/group1、/data/group2和/data/share有读写权限。
目录 | 用户 | 权限 |
---|---|---|
/data/group1 | g1_user、manager | 读写权限 |
/data/group1 | g2_user | 无权限 |
/data/group2 | g2_user、manager | 读写权限 |
/data/group2 | g1_user | 无权限 |
/data/share | manager | 读写权限 |
/data/share | g1_user、g2_user | 只读权限 |
前期准备
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
关闭selinux
setenforce 0
sed -i s#=enforcing#=disabled#g /etc/selinux/config
samba安装
yum安装
samba安装非常简单,使用系统镜像制作的基础yum源即可完成安装。
yum -y install samba
设置开机自启
systemctl enable smb.service
samba配置
创建所需用户
useradd -s /sbin/nologin -M g1_user
useradd -s /sbin/nologin -M g2_user
useradd -s /sbin/nologin -M manager
为用户设置samba访问密码
pdbedit -a g1_user
pdbedit -a g2_user
pdbedit -a manager
//我使用的是tdbsam用户后台,所以使用pdbedit -a创建samba用户
创建共享目录
mkdir -p /share/{group1,group2,data}
chmod -R o+w /share
编写samba配置文件
vim /etc/samba/smb.conf
[global]
workgroup = SAMBA //设定Samba Server要加入的工作组或者域
security = user //设置用户访问Samba Server的验证方式
passdb backend = tdbsam //设置用户信息存储方式
public = no //不允许匿名访问
browseable = yes //可以浏览指定共享
writable = no //默认用户没有写权限
[group1]
path = /share/group1
valid users = g1_user,manager //只有配置的用户可以访问这个目录
write list = g1_user,manager //只有配置的用户有写权限
create mask = 0775 //新建的文件权限为775
directory mask = 0775 //新建的目录权限为775
[group2]
path = /share/group2
valid users = g2_user,manager
write list = g2_user,manager
create mask = 0775
directory mask = 0775
[data]
path = /share/data
valid users = g1_user,g2_user,manager
write list = manager
create mask = 0775
directory mask = 0775
samba常用命令
pdbedit
场景是passdb backend = tdbsam
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用户的账号。
smbpasswd
场景是passdb backend = smbpasswd
smbpasswd -a username //增加用户(该账户必须存在于/etc/passwd文件中)
smbpasswd -d username //冻结samba用户
smbpasswd -e username //解冻samba用户
smbpasswd -n username //把samba用户的密码设置成空(要在[global]中写入null passwords -true)
smbpasswd -x username //删除 samba 用户