首先,我创建一个文件并检查它的标准权限和ACL条目:
$ touch file; ls -l file; getfacl file
-rw-r--r-- 1 user user 0 Jul 30 16:26 file
# file: file
# owner: user
# group: user
user::rw-
group::r--
other::r--
然后,我在文件上设置ACL掩码,然后再次检查它的标准权限和ACL条目:
$ setfacl -m mask:rwx file
$ ls -l file; getfacl file
-rw-rwxr--+ 1 user user 0 Jul 30 16:26 file
# file: file
# owner: user
# group: user
user::rw-
group::r--
mask::rwx
other::r--
请注意,文件的ACL掩码标准组权限也已更改。
- ACL掩码和标准组权限之间存在什么联系?
- 耦合ACL掩码和文件组权限的原因是什么?它背后的逻辑是什么?
有问题的发行版是Debian Linux 7.6和CentOS 7
编辑
在这一点上,我只想分享我在研究标准文件组权限和ACL掩码之间的关系时得出的一些发现。这是我发现的经验观察:
可以更改ACL掩码:
- 通过
setfacl -m m:<perms>
命令直接设置; - 通过使用
chmod
命令更改文件组权限(如果已经存在ACL掩码;它可能不存在,因为如果文件上没有命名用户或组ACL权限,它是可选的); - 通过添加命名用户或组ACL条目(掩码将自动重新计算)。
- 通过
仅当通过setfacl直接设置掩码或使用chmod修改文件组权限(不自动计算)设置掩码时,掩码才会强制使用最大访问权限(如果存在的权限超过了ACL掩码权限)。对ACL条目的任何更改都将触发ACL掩码自动重新计算,并有效地关闭“强制模式”。
使用ACL时,有一些副作用会隐式影响标准文件组的权限:
- 应用于文件的命名用户或组ACL条目可以更改ACL掩码(增加其权限),从而更改有效的文件组权限。例如,如果您作为文件所有者具有“ rw-r--r-- jim学生”权限,并且还向用户“ jack”授予了rw权限,则您还将向任何人隐式授予rw权限来自“学生”组。
- 更严格的(较少权限)ACL掩码可以永久删除相应的标准文件组权限。例如,如果您的文件具有rw标准文件组权限,并且对文件应用了只读ACL掩码,则其组权限将减少为只读。然后,如果您删除所有扩展的ACL条目(使用
setfacl -b
命令),则组权限将保持只读状态。这仅适用于更严格的ACL掩码,较软的ACL掩码(更多权限)在删除原始文件组权限后不会永久更改。