如何在Web目录上强制执行权限?

时间:2014-04-02 02:19:33

标签: permissions file-permissions

我维护一个Web目录:

drwxrwsr-x 2 hendry www-data 57344 Apr  1 21:02 foobar/

我以为我创造了一个"粘性位" (请更正)请确保-rw-rw-r--该目录中文件的权限,但它似乎无法正常工作。

有时在foobar /中创建的文件可以具有-rw-r - r--权限(缺少对www-data的写入!)。我认为这是因为某些Web进程使用该权限写入文件。因此,不是进入上述Web应用程序(假设我不能这样做)并更改umask,我如何确保文件始终具有-rw-rw-r--?

我想确保httpd进程始终可以对这些文件进行操作。

1 个答案:

答案 0 :(得分:1)

目录上的setgid位仅确保在目录中创建的文件也归拥有该目录的组所有。它不会影响授予组的权限(中间三位)。

你想要的是覆盖在目录中创建的文件的默认权限位,即:

setfacl -m default:user:www-data:rwx foobar/

foobar上的ACL应该如下所示:

foobar% getfacl .
# file: .
# owner: www-data
# group: www-data
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:group:www-data:rwx
default:mask::rwx
default:other::r-x

如果你创建一个带有限制性umask的文件......

foobar% umask
077
foobar% touch foo
foobar% ls -l
total 0
-rw-rw-r--+ 1 www-data www-data 0 Apr  2 11:18 foo

请注意,第一列末尾有+,表示存在ACL,您应该使用getfacl查看完整图片。

foobar% getfacl foo
# file: foo
# owner: www-data
# group: www-data
user::rw-
group::r-x                      #effective:r--
group:www-data:rwx              #effective:rw-
mask::rw-
other::r--