一、ACL使用
1.1、ACL中mask修改最大权限
什么是最大权限,看下面的信息:
[root@localhost ~]# getfacl /project
getfacl: Removing leading '/' from absolute path names
# file: project
# owner: root
# group: tgroup
user::rwx
# 所属用户权限
user:tempuser:r-x
# 临时用户权限
group::rwx
# 所属组权限, 文件创建时的所属组
group:temp:r-x
# 一般组的权限 创建的临时组
mask::rwx
# 权限掩码,用来控制最大权限
other::---
最大权限是指: 如果给用户赋予了ACL权限,则用户所获取的权限并不是ACL时所附的权限,而是赋予的ACL权限 与 mask权限 进行 与 操作 之后的权限。例如:user:tempuser:r-x 第一位是r, mask的第一位也是r, 则与操作后,用户则有 r 的权限, user:tempuser:r-x 第二位是 - ,mask的第二位是 w,则与操作后用户则没有 w 的权限。
最大权限的作用:mask的默认值为rwx,即最大权限,任何其他的权限值和mask相“与”都会得到其自身; 可以通过调整mask的方式来控制分配给用户的最大权限,例如: mask值调整为 r-x ,则不管是否给用户分配”w”权限,用户都没有“w”的权限。mask可以用来避免权限分配不当而给系统带来的风险。
注意:mask不会影响文件所有者的权限
实验:
# 设置mask
[root@localhost ~]# setfacl -m m:rx /project
# 查看mask
[root@localhost ~]# getfacl /project
getfacl: Removing leading '/' from absolute path names
# file: project
# owner: root
# group: tgroup
user::rwx
user:tempuser:r-x
group::rwx #effective:r-x
# 所属组虽然设置的权限为rwx,但其实际的权限 r-x ✨
group:temp:r-x
mask::r-x
# 修改之后的mask
1,2、ACL权限的删除
# 删除指定ACL权限
[root@localhost ~]# setfacl -x u:tempuser /project
[root@localhost ~]# getfacl /project
getfacl: Removing leading '/' from absolute path names
# file: project
# owner: root
# group: tgroup
user::rwx
group::rwx
group:temp:r-x
mask::rwx
other::---
# 删除所有ACL权限
[root@localhost ~]# setfacl -b /project
[root@localhost ~]# getfacl /project
getfacl: Removing leading '/' from absolute path names
# file: project
# owner: root
# group: tgroup
+
user::rwx
group::rwx
other::---
# 注意: 权限没有 +
[root@localhost ~]# ll -d /project
drwxrwx---. 2 root tgroup 6 8月 23 13:07 /project
1.3、ACL权限的递归及默认值
所谓递归是指:指定目录下的所有文件及其子目录,都具体指定的ACL权限属性
注意:ACL权限只对已有的文件或目录起作用,对新加的不起作用
ACL的默认值:如果希望新加的文件或目录都具有父目录所拥有的ACL权限属性,则需要设置默认值
# 设置ACL权限
[root@localhost project]# setfacl -m u:tempuser:rx /project
[root@localhost project]# ll -d
drwxrwx---+ 2 root tgroup 6 8月 23 13:07 .
# project目录已经设置好了ACL权限,在该目录中添加一个文件,文件并不具有ACL权限,因为在设置ACL权限时并没有指定递归属性
[root@localhost project]