基于普通文件或目录 设置ACL其实就是针对指定的用户或用户组设置文件或目录的操作权限,更加精准地派发 限。
另外,如果针对某个目录设置了ACL,则目录中的文件会继承其ACL权限;
若针对文件 设置了ACL,则文件不再继承其所在目录的ACL权限。
setfacl
用于管理文件的 ACL 权限规则
使用setfacl 命令可以针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的控制。
针对目录文件需要使用-R递归参数;
针对普通文件则使用-m参数;
如果想要删除某个 文件的ACL,则可以使用-b参数。
-m 修改权限
-M 从文件中读取权限
-x 删除某个权限
-b 删除全部权限
-R 递归子目录
普通用户是无法进入/root目录中的,现在为普通用户单独设置一下权限:
[root@localhost ~]# setfacl -Rm u:trick:rwx /root
[root@localhost ~]# su - trick
[trick@localhost ~]$ cd /root
[trick@localhost root]$ ls
111 AA.conf checkhosts.sh key.sh Templates
123 addusers.sh c.txt linux test1.sh
123.sh anaconda-ks.cfg Desktop linux.txt test.sh
可以看到文件权限的最后一个点变成了加号+,这就意味着该文件已经设置了 ACL
[root@localhost ~]# ls -ld /root
dr-xrwx---+ 23 root root 4096 Jan 27 00:29 /root
允许某个组的用户都可以读写/etc/fstab 文件
[root@localhost ~]# setfacl -m g:trick:rw /etc/fstab
要清空所有ACL权限,请用-b参数;
要删除某一条指定的权 限,就用-x参数:
[root@localhost ~]# setfacl -x g:trick /etc/fstab
getfacl
用于查看文件的 ACL 权限规则
[root@localhost ~]# getfacl /root
getfacl: Removing leading '/' from absolute path names
# file: root
# owner: root
# group: root
user::r-x
user:trick:rwx
group::r-x
mask::rwx
other::---
ACL权限的设置都是立即且永久生效的,操作前提前备份
在备份/home目录上的ACL权限时,可使用-R递归参数,这样不仅能够把目录本 身的权限进行备份,还能将里面的文件权限也自动备份。加上输出 重定向操作,可以轻松实现权限的备份。需要注意,getfacl 在备份目录权限时不能使用绝对路径的形式,因此我们需要先切换到最上层根目录,然后再进行操作。
[root@localhost ~]# cd /
[root@localhost /]# getfacl -R home > backup.acl
ACL 权限的恢复使用的是--restore 参数。由于在备份时已经指定是对/home 目录进行操作,所以不需要写对应的目录名称,它能够自动找到要恢复的对象:
[root@localhost /]# setfacl --restore backup.acl