我维护一个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进程始终可以对这些文件进行操作。
答案 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--