我试图了解这种Unix行为(我恰巧在Ubuntu 11.10上进行了测试):
$ touch foo
$ setfacl -m u:nobody:rwx foo
$ getfacl foo
# file: foo
# owner: michael
# group: michael
user::rw-
user:nobody:rwx
group::rw-
mask::rwx
other::r--
$ chmod g-rw foo
$ getfacl foo
# file: foo
# owner: michael
# group: michael
user::rw-
user:nobody:rwx #effective:--x
group::rw- #effective:---
mask::--x
other::r--
请注意,chmod(1)命令已更新ACL掩码。为什么会这样?
在SunOS的联机帮助有以下说:
如果使用chmod(1)命令更改具有ACL条目的文件的文件组所有者权限,则文件组所有者权限和ACL掩码都将更改为新权限。请注意,新的ACL掩码权限可能会更改文件上具有ACL条目的其他用户和组的有效权限。
我问,因为如果chmod(1)没有这种行为,这对我来说很方便。我希望通过了解为什么会这样做,可以更好地设计如何设置文件系统权限。