文章目录
ACL权限简介
如下图,对于无法使用ugo权限实现的控制,可以使用ACL(Access Control Lists)设置更加灵活的权限
分区ACL权限(默认开启,不需要特别关注)
查看分区ACL权限
dumppe2fs -h /dev/sda3
-h :仅显示超级块中信息,而不显示磁盘块组的详细信息。
临时开启分区ACL权限,重启失效
# 重新挂在根分区,并挂载加入ACL权限
mount -o remount,acl /
永久开启分区ACL权限
# vi /etc/fstab # 修改根分区,加入acl支持,defaults中已经默认支持,此处只做演示。
/dev/mapper/centos-root / xfs defaults,acl 0 0
# mount -o remount # 重新挂载文件系统或重启系统,使生效
ACL命令
查看ACL命令:getfacl
语法
getfacl [文件名]
范例
设置ACL权限命令:setfacl
语法
setfacl [选项] 文件名
选项介绍
选项 | 介绍 |
---|---|
-m | 设定ACL权限 |
-x | 删除指定的ACL权限 |
-b | 删除所有的ACL权限 |
-d | 设定默认ACL权限(针对目录,设定后,新加文件会为该权限) |
-k | 删除默认ACL权限 |
-R | 递归设定ACL权限 |
范例
1.设置用户ACL权限
只针对已经存在的文件,新加文件不起作用
setfacl -m u:st:rx /project # 给用户st赋予r-x权限
2.设置组的ACL权限
setfacl -m g:tgroup2:rwx project/ # 为组tgroup2分配ACL权限。
3.设置最大有效值权限mask
设置的用户以及组的权限需要与mask的权限“相与”(AND),mask默认为rwx,相与后不变。
setfacl -m m:rwx 文件名 # 设置文件mask权限
4.删除指定用户的ACL权限
setfacl -x u:用户名 文件名
5.删除指定组的ACL权限
setfacl -x g:组名 文件名
6. 删除文件的所有ACL权限
setfacl -b 文件名
7. 递归设置ACL权限
setfacl -m u:用户名:权限: -R 目录
注:-R的位置是固定的
8.默认ACL权限
setfacl -m d:u:用户名:权限 -R 目录
注:只针对当前目录下新建的文件权限,与上一条命令互补
完整示例
useradd zhangsan
useradd lisi
useradd st
groupadd tgroup
mkdir /project
chown root:tgroup /project # 设置project目录的拥有者为root,所有组为tgroup
chmod 770 /project # 设置/project目录的默认权限为rwxrwx---
----------------------------
setfacl -m u:st:rx /project # 给用户st赋予r-x权限
----------------------------
groupadd tgroup2
----------------------------
setfacl -m g:tgroup2:rwx project/ # 为组tgroup2分配ACL权限。
----------------------------