我有一个在输出中显示r-x
组权限的目录:ls -al
mburr@burrvm-mint20:~$ ls -ald /media/mburr
drwxr-x---+ 2 root root 4.0K Oct 6 17:11 /media/mburr
输出ls -al
还显示该目录已应用 ACL(权限设置末尾的“+”),因此我使用以下命令查看该目录getfacl
:
mburr@burrvm-mint20:~$ getfacl /media/mburr
getfacl: Removing leading '/' from absolute path names
# file: media/mburr
# owner: root
# group: root
user::rwx
user:mburr:r-x
group::---
mask::r-x
other::---
该输出显示允许我的用户读取和遍历目录的 ACL 条目(user:mburr:r-x
),但让我好奇的是,它getfacl
所说的基本组权限group::---
与所显示的不同ls -al
(r-x
)。
我想了解原因并希望有人可以解释。
答案1
当 ACL 中有mask
条目时,那 mask
条目就是在 显示的“经典”组权限中出现的内容ls -l
。
如果mask
在创建 ACL 时未明确指定,则默认值为以下值的并集:
- ACL_USER(授予指定用户的权限 -
user:mburr:r-x
此处) - ACL_GROUP_OBJ(授予条目的权限
group
-group::---
此处) - ACL_GROUP(授予命名组的权限 - 示例中未使用)
在这种情况下,和的并集user:mburr:r-x
是group::---
,r-x
所以这就是mask
设置的,也是“经典”组权限位显示的。
这记录在acl(5) 手册页:
ACL 条目和文件权限位之间的对应关系
...
如果 ACL 中有 ACL_MASK 条目,则组权限与 ACL_MASK 条目的权限相对应。否则,如果 ACL 没有 ACL_MASK 条目,则组权限与 ACL_GROUP_OBJ 条目的权限相对应。
注意:我找到了 SUSE 的文档Linux 中的访问控制列表很有帮助。