我有这个/srv
目录,为了方便起见,我希望wheel
组内的成员对其具有写访问权限,并且对于创建的任何文件和目录都可以间接继承该权限。
但是之后sudo chgrp wheel /srv && sudo chmod g+ws /srv
,我仍然无法在下创建目录和文件/srv
:
$ mkdir /srv/mantis
mkdir: cannot create directory `/srv/mantis': Permission denied
检查 ACL表明,由于某种原因,/srv
有效组权限仅为:r-x
$ getfacl /srv
getfacl: Removing leading '/' from absolute path names
# file: srv
# owner: root
# group: wheel
# flags: -s-
user::rwx
user:webmaster:rwx
group::r-x
mask::rwx
other::r-x
发生这种情况的原因是什么? 可能是当我为用户添加额外访问权限时webmaster
(早在setgid
尝试之前)我意外篡改了组 ACL?
答案1
setfacl
按原因设置的掩码chgrp
不会反映更改。您可以运行setfacl -m g::rwx /srv
以设置组权限。
否则,如果您根本不需要高级 ACL,您可以删除所有规则,然后setfacl -b /srvand
重新运行sudo chmod g+ws /srv
。
编辑前
从结果来看,getfacl
该命令似乎sudo chmod g+ws /srv
不起作用。似乎您正在sudo chgrp wheel /srv && sudo chmod g+ws /srv
作为单个命令运行。如果sudo chgrp wheel /srv
失败(无论出于何种原因,退出代码为非零),&&
连接器将忽略之后的任何内容,因此sudo chmod g+ws /srv
不会执行。
为了说明这一点,您可以运行cat NoSuchFile && echo "This message will be printed"
。echo
本例中忽略了该命令。
您可以尝试分别运行sudo chgrp wheel /srv
和sudo chmod g+ws /srv
并记下任何消息。或者,您可以尝试sudo chmod 2775 /srv
应该正确设置权限的那个。