首页 > 代码库 > 权限管理ACL权限

权限管理ACL权限

简介

文件的权限一般主要针对三种用户类型:所有者、用户组、其他人;如果有一个用户,我们希望他对文件的权限不在上述三种用户权限之内,我们需要怎么做呢?再新添一个用户组,并将该用户组设为文件的用户组?不可以,一个文件只能有一个用户组,如果指定了新的用户组,之前的用户组将作废。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权限

权限管理ACL权限