CentOS7设置Samba权限
CentOS7设置Samba权限
1.SMB安装
1.1 安装smb服务端、客户端
# 查看系统版本
[root@centos_smb_server ~]# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
# 查看是否已安装smb
[root@centos_smb_server ~]# rpm -qa|grep samba
# 更新系统
[root@centos_smb_server ~]# yum update -y
# 安装smb服务端、客户端
[root@centos_smb_server ~]# yum install -y samba samba-client
1.2 关闭selinux和防火墙
[root@centos_smb_server ~]# setenforce 0
setenforce: SELinux is disabled
[root@centos_smb_server ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
[root@centos_smb_server ~]# systemctl stop firewalld
[root@centos_smb_server ~]# systemctl disable firewalld
1.3 smb配置文件
/etc/samba/smb.conf
cat /etc/samba/smb.conf
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.
# 全局配置
[global]
workgroup = SAMBA
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
# 共享打印机配置
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
1.4 启动smb服务
# 启动服务
[root@centos_smb_server ~]# systemctl start smb nmb
# 设置为开机自启
[root@centos_smb_server ~]# systemctl enable smb nmb
Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/nmb.service to /usr/lib/systemd/system/nmb.service.
2.共享配置
开设共享目录”/shares”,允许任意人员访问!
2.1 创建目录
# 创建目录
[root@centos_smb_server ~]# mkdir /shares
# 允许所有人访问
[root@centos_smb_server ~]# chmod 777 /shares
2.2 配置文件
编辑配置文件,在文件末端增加以下内容:
[shares]
comment = public
path = /shares
public = no
writable = yes
校验配置语法,看到OK即可!
[root@centos_smb_server ~]# testparm
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
WARNING: The 'netbios name' is too long (max. 15 chars).
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
2.3 创建用户
创建用户(设置为不允许登录,用户目录为:
/shares/smb_01
)[root@centos_smb_server ~]# useradd -d /shares/smb_01 -s /sbin/nologin smb_01
将用户添加为
smb
用户并设置密码[root@centos_smb_server ~]# pdbedit -a -u smb_01 new password: retype new password:
重载smb服务
[root@centos_smb_server ~]# systemctl reload smb
2.4 Mac连接测试
打开访达
在顶部工具栏打开
工具 --> 连接服务器
输入samba服务器的IP地址,点击“连接”
输入凭据,用户名
smb_01
,密码123456
,点击连接选择列表中的
shares
,点击好
进行连接查看文件列表
3.授权场景示例
当前有以下场景需求:
test_01
用户可以对/shares/01
目录进行读写删test_01
用户可以对/shares/02
目录只读test_01
用户禁止访问/shares/03
目录test_02
用户只
可以对/shares/01
目录进行读写删
3.1 思路简述
为方便权限控制,特别是后续用户多的情况下,如果仅仅通过smb配置共享的方式,会导致维护难度大大的提升,因此针对此场景,尝试通过文件访问控制列表 ACL
(Access Control Lists)进行权限控制。
ACL
是 Access Control List 的缩写,主要目的是针对在传统的三种身份和三种权限之外,提供更加细化的局部权限设定
。官方手册来讲,它主要针对用户、用户组、以及掩码方面控制权限。
简单去理解就是,ACL 可以针对单个用户、单个用户组来进行权限细化的控制。而在windows系统上,没有这个ACL,ACL是类Unix(Unix-like)操作系统权限的额外支持项目,因此要使用ACL必须要有文件系统的支持才行。主要包括ReiserFS, EXT2/EXT3/ext4, JFS, XFS等文件系统。
3.2 创建用户
# 创建用户目录
[root@centos_smb_server ~]# mkdir -p /shares/user
# 创建用户test_01
[root@centos_smb_server ~]# useradd -d /shares/user/test_01 -s /sbin/nologin test_01
# 增加到smb服务并设置密码为123
[root@centos_smb_server shares]# pdbedit -a -u test_01
# 创建用户test_02
[root@centos_smb_server ~]# useradd -d /shares/user/test_02 -s /sbin/nologin test_02
# 增加到smb服务并设置密码为123
[root@centos_smb_server shares]# pdbedit -a -u test_02
3.3 创建用户组
# 创建用户组group_test
[root@centos_smb_server ~]# groupadd group_test
3.4 修改用户附属用户组关系
# 把用户添加到group_test用户组
[root@centos_smb_server ~]# usermod -G group_test test_01
[root@centos_smb_server ~]# usermod -G group_test test_02
3.5 目录ACL授权
解释下为什么要加
-R
,递归创建,作用于父目录与所有子目录设置acl,即已经存在的文件设置,若是新建目录/文件,则没有acl
# 进入共享目录
[root@centos_smb_server ~]# cd /shares/
# 创建目录
[root@centos_smb_server shares]# mkdir {01,02,03}
# 授权01目录为用户组group_test可读写删
[root@centos_smb_server shares]# setfacl -m g:group_test:rwx -R 01/
# 授权02目录为用户test_01只读
[root@centos_smb_server shares]# setfacl -m u:test_01:rx -R 02/
# 禁止test_01对03目录访问
[root@centos_smb_server shares]# setfacl -m u:test_01:--- -R 03/
3.6 测试效果
如上2.4章节所示,此处不再详细展开。
4.总结
通过ACL
进行权限控制,比直接通过smb配置进行控制,会更加灵活,降低运维成本,毕竟简单敲几行命令能解决的事情为什么要写配置文件来呢~
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!