setfacl 在我的 Web 目录上不起作用

setfacl 在我的 Web 目录上不起作用

在 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

相关内容