简介
文件的权限一般主要针对三种用户类型:所有者、用户组、其他人;如果有一个用户,我们希望他对文件的权限不在上述三种用户权限之内,我们需要怎么做呢?再新添一个用户组,并将该用户组设为文件的用户组?不可以,一个文件只能有一个用户组,如果指定了新的用户组,之前的用户组将作废。ACL命令就是为了解决三种基本用户类型不满足要求时的问题
查看分区的ACL权限是否开启
ACL权限需要文件所在的分区的支持;首先查看一下系统有哪些分区,使用df -h命令
根分区的文件系统是/dev/sda5,查看该分区是否开启了ACL权限
dumpe2fs -h /dev/sda5
-h 仅显示超级块中的信息,而不显示磁盘块组的详细信息
如果Default mount options一行内容有acl,表明该分区已经开启了ACL权限
开启ACL权限
临时开启
mount -o remount,acl / 重新挂载根分区,并加入ACL权限
永久开启
vi /etc/fstab
第一行描述的是根分区挂载时的信息,根分区挂载时的选项为defaults,一般设置了defaults选项,该分区时支持ACL权限的,如果发现即使设置了defaults也没有ACL权限,在defaults后加上“,acl”,保存退出,再重新挂载一次根分区文件系统mount -o remount /,使修改生效
设定与查看ACL权限
查看ACL权限
getfacl 文件
设定ACL权限
setfacl 选项 文件名
-m 设定ACL权限
-x 删除指定的ACL权限
-b 删除所有的ACL权限
-d 设定默认的ACL权限
-k 删除默认的ACL权限
-R 递归设定ACL权限
setfacl -m u:用户:rwx 文件 给用户设定权限
setfacl -m g:用户组:rwx 文件 给用户组设定权限
最大有效权限mask
在查看文件的ACL权限时,有一个mask值——最大有效权限,给用户分配ACL权限时,要将分配的权限与mask值相与才能得到用户的真正权限;如setfacl -m u:st:rx,mask值为rwx,真正的用户权限为r-x&rwx=r-x;最大有效权限会影响到ACL权限和用户组的权限
修改文件的最大有效权限 setfacl -m m:权限 文件
修改了mask值为r--,group和user:st后面出现了注释,#effective:r--,表明即使st用户拥有r-x,group拥有rwx,但是由于mask为r--,实际上他们的权限均为r--了
删除ACL权限
setfacl -x u:用户名 文件名 删除指定用户的acl权限
setfacl -x g:组名 文件名 删除指定组的acl权限
setfacl -b 文件名 删除文件的所有acl权限
递归ACL权限
递归ACL权限指父目录在设定ACL权限时,所有的子文件及子目录也会拥有相同的ACL权限
setfacl -m u:用户名:权限 -R 目录
默认ACL权限
如果给父目录设定了默认ACL权限,父目录中的所有新建子文件都会继承父目录的ACL权限
setfacl -m d:u:用户名:权限 [-R] 目录
如果设置了选项-R,则父目录下的子目录也有了默认ACL权限