为什么需要ACL权限:
文件就三个权限 所有者权限 组权限 其他权限
有时候不够用 这时候就需要ACL权限 用来解决用户身份不够的问题
开启ACL:
#查看分区ACL权限是否开启:
dumpe2fs -h /dev/sda5
dumpe2fs命令是查询指定分区详细文件系统信息的命令;
选项:
-h:仅显示超级块中信息,而不显示磁盘块组的详细信息;
文件信息里项里包含 Default mount options: user_xattr acl 那就说明分区是支持acl的
#临时开启分区ACL权限:
mount -o remount,acl /
重新挂载根分区,并挂在加入ACL权限
#永久开启分区ACL权限:
vi /etc/fstab (在默认文件系统后加上,acl 即可)
e.g:UUID=24f28fc6-717e-4bcd-a5f7-32b959024e26 / ext4 defaults,acl 0 1
#重新挂载文件系统或重启动系统,使修改生效
mount -o remount /
设定与查看ACL(强调一下针对的是文件和用户之间的关系)
getfacl 文件名 //查看acl权限
setfacl 选项 文件名 //设定ACL权限的命令
选项:
-m:设定ACL权限;
-x:删除指定的ACL权限;
-b:删除所有的ACL权限;(e.g setfacl -b 文件名)
-d:设定默认ACL权限;
-k:删除默认ACL权限;
-R:递归设定ACL权限;
#为用户设定ACL权限
setfacl -m u:用户名:权限(rwx) 文件名
#为用户组设定ACL权限
setfacl -m g:组名:权限(rwx) 文件名
最大有效权限mask(使用命令getfacl 文件名显示的结果中倒数第二排会出现mask这个词)mask是用来指定最大有效权限的。如果我给用户赋予了acl权限,是需要和mask的权限“相与”才能得到用户的真正权限。相与是计算机中的术语,皆真方为真,有假便为假。
修改mask值的命令 setfacl -m m:权限(rwx)
文件
Linux中默认ACL权限和递归ACL权限
ACL 目录下的子目录 这就需要递归
递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限(这里就出现了acl的一个严重的问题,对目录使用递归权限,子文件本来不想给的权限,结果给了,这就出现了权限溢出)
递归只能对目录设置,不能对文件
-R 选项
e.g:setfacl -m u:lw:rx -R /av
不是默认的ACL权限,那么命令执行之后再新建的目录就不会有之前的ACL权限,这里就需要使用*默认的ACL权限*
默认ACL权限的作用时如果给父目录设定了默认的ACL权限,那么父目录中所有新建的
文件都会继承父目录的ACL权限
setfacl -m d:u:用户名:权限(rwx) -R 目录
d表示 default 默认