为什么基本权限的“getfacl”输出与“ls -al”不同?

为什么基本权限的“getfacl”输出与“ls -al”不同?

我有一个在输出中显示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 -alr-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-xgroup::---r-x所以这就是mask设置的,也是“经典”组权限位显示的。

这记录在acl(5) 手册页

ACL 条目和文件权限位之间的对应关系

...

如果 ACL 中有 ACL_MASK 条目,则组权限与 ACL_MASK 条目的权限相对应。否则,如果 ACL 没有 ACL_MASK 条目,则组权限与 ACL_GROUP_OBJ 条目的权限相对应。

注意:我找到了 SUSE 的文档Linux 中的访问控制列表很有帮助。

相关内容