【Linux】Linux权限管理03 ACL权限

文件一般权限包括所有者权限、组权限和其他权限,有时候不能满足要求(一个不属于u/g/o的用户也要对文件有权限),这时候就需要ACL权限,用来解决用户身份不够的问题

CentOS不需要开启ACL权限,xfs文件系统默认开启了ACL权限,可以直接使用getfaclsetfacl命令

查看分区ACL权限是否开启

1
2
3
4
5
6
7
8
9
df #查看分区
dumpe2fs -h /dev/sda5
#dumpe2fs命令时查询指定分区详细文件系统信息的命令
-h 仅显示超级块中信息,而不显示磁盘块的详细信息
#仅适用于ext4等文件格式,xfs默认开启了acl权限
文件信息里项:
Default mount options: user_xattr acl
那就说明分区是支持acl的


开启ACL权限

临时开启分区ACL权限

1
2
mount -o remount,acl /
#重新挂载根分区,并挂载加入acl权限

永久开启分区ACL权限

1
2
3
4
5
6
7
vi /etc/fstab
UUID=c2ca6f57-b15c-43ea=bca0-f239083d8bd2 / ext4 defaults,acl 1(#启动是否需要检测) 1(#启动是否需要备份)
#加入acl
mount -o remount /
#重新挂载文件系统或重启系统,使修改生效


查看ACL权限

1
getfacl 文件名

会显示mask值


设置acl权限

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
setfacl 选项 文件名
选项
-m #设定acl权限
-x #删除指定的acl权限
-b #删除所有的acl权限
-d #设定默认acl权限
-k #删除默认acl权限
-R #递归设定acl权限
例:setfacl -m u:lw:rx /av
#给用户lw赋予r-x权限,使用"u:用户名:权限"格式
例:setfacl -m g:group2:rwx /av
#给用户组group2赋予rwx权限,使用"g:组名:权限"格式

设定之后会在ls -al命令显示的权限末尾出现+号

1
drwxr-xr-x+ root root


最大有效权限mask

mask是用来指定最大有效权限的。如果给用户赋予了acl权限,是需要和mask的权限“相与”才能得到用户的真正权限。相与是计算机中的术语,皆真方为真,有假便为假。

最大权限也会影响到组权限。例:某文件所有者为tony,chmod赋予的普通权限为7,而acl赋予tony的权限为5,则acl权限会高于chmod权限

修改mask值

1
2
setfacl -m m:rx 文件
#设定mask权限为r-x。使用“m:权限”格式

删除acl权限

1
2
3
4
5
6
7
8
setfacl -x u:用户名 文件
#删除指定用户的acl权限
setfacl -x g:组名 文件
#删除指定用户的acl权限
setfacl -b 文件
#删除文件所有的acl权限


递归ACL权限

在给父目录赋予权限的同时,给已经存在于目录下的文件赋予相同的权限

1
2
setfacl -m u:用户名:权限 -R 目录名
#R表示递归

注意

  • 用递归的方式容易导致文件权限溢出(目录为r-x,子文件则也为r-x)
  • 递归acl只能用在目录而不能用于普通文件


默认ACL权限

给父目录下将来新建的文件默认赋予父目录的权限

1
2
setfacl -m d:u:用户名:权限 目录名
#d表示default

设置后可以使用getfacl查看


补充:
https://www.cnblogs.com/Jimmy1988/p/7249844.html