在 Debian 7.0 上,我在挂载上设置了文件系统访问控制列表
mx:/srv/www$ mount | grep acl
/dev/xvda on / type ext3 (rw,relatime,errors=remount-ro,acl,data=ordered)
现在我只是希望新创建的文件和目录拥有该www-data
组。
sudo setfacl -Rm d:g:www-data:rX,g:www-data:rX /srv/www/
现在它具有以下设置:
mx:/srv/www$ getfacl .
# file: .
# owner: hendry
# group: root
user::rwx
group::r-x
group:www-data:r-x
mask::r-x
other::r-x
default:user::rwx
default:group::r-x
default:group:www-data:r-x
default:mask::r-x
default:other::r-x
为了测试,我做了:
mx:/srv/www$ touch test
mx:/srv/www$ ll test
-rw-r--r--+ 1 hendry hendry 0 Mar 19 07:25 test
我原本期望在新创建的文件上看到 hendry:www-data test
。我遗漏了什么?
答案1
尝试运行:
$ getfacl test
你应该看到类似这样的内容:
# file: test
# owner: hendry
# group: hendry
user::rwx #effective: rw-
group::r-x #effective: r--
group:www-data:r-x #effective: r--
mask::r-x
other::r--
我可能在这里弄错了一些事情,但重点是group:www-data:r-x
应该存在。这就是default:group:$gid:rwx
语法的作用——它确保group:$gid:rwx
创建对象上存在 ACL 条目。
如果您希望您创建的文件/目录/fifos/etc 由该组拥有,您必须使该目录由 www-data 组拥有,并设置 setgid 标志:
$ chown :www-data /srv/www
$ chmod g+s /srv/www