一、什么是ACL权限
ACL是Access Control List(访问控制列表)的缩写,主要的目的是在提供传统的owner,group,others的read,write,execute权限之外的局部权限设定。ACL可以针对单个用户,单个文件或目录来进行r,w,x的权限设定,特别适用于需要特殊权限的使用情况。
二、分区ACL权限开启方式
查看分区ACL权限是否开启:# dumpe2fs -h /dev/sdb2
如果看到上面的信息,说明分区已经开启ACL权限。
挂在分区时,默认会开启ACL 权限
临时开启方式:# mount -o remount,acl /dev/sdb2
永久生效:# vim /etc/fstab
编辑完上面的文件后,重启或者# mount -o remount / 生效
三、设定ACL权限
# setfacl 选项 文件名
选项:
-m 设定ACL权限
-x 删除指定的ACL权限
-b 删除所有的ACL权限
-d 设定默认的ACL权限
-k 删除默认的ACL权限
-R 递归设定ACL权限
查看ACL权限:# getfacl 文件名
实例测试:
# mkdir /project 创建project目录
# useradd test1 创建用户test1
# useradd test2 创建用户test2
# groupadd testgroup 创建组testgroup
# gpasswd -a test1 testgroup 将test1添加到testgroup组
# gpasswd -a test2 testgroup 将test2添加到testgroup
# chown root:testgroup /project 将project的所属组改为testgroup
# chmod 770 /project/ 设置project目录的权限
# setfacl -m u:acl:rx /project/ 给acl用户设定读和执行权限
# getfacl project/ 查看project目录的ACL权限
# groupadd testgroup2 创建组testgroup2
# setfacl -m g:testgroup2:rwx /project/ 给testgroup2组设定对project目录的读写执行的权限
# getfacl project/ 查看project目录的权限
四、ACL最大有效权限和删除
mask是用来指定最大有效权限的。如果给用户赋予了ACL权限,是需要和mask的权限“相与”才能得到用户的真正权限。
A |
B |
and |
r |
r |
r |
r |
- |
- |
- |
r |
- |
- |
- |
- |
# setfacl -m m:rx /project/ 设置最大有效权限读和执行
删除ACL权限
# setfacl -x g:testgroup2 /project/ 删除testgroup2的ACL权限
# setfacl -b project/ 删除所有ACL权限
五、默认与递归ACL权限(只针对目录)
# setfacl -m u:acl:rwx -R project/ 递归设置project目录的ACL权限(递归对现有的文件生效)
# setfacl -m d:u:acl:rx /project/ 设置project目录的默认ACL权限(默认对未来的文件生效)