使用 setfacl 设置默认文件权限

使用 setfacl 设置默认文件权限

我需要在以下用户创建的新文件上设置默认 ACL:httpd通过阿帕奇服务用户,这样创建的文件的 GUID 设置为 dev 用户帐户(我们称之为开发者) 以及特定权限。

看起来我已经让 SGID 工作正常了,因为任何由 PHP 网页创建的文件都有阿帕奇所有者和开发者rwxrwx---组。但是他们没有 的 ACL,而是有rw-rw----

[root@webserver ~]# cd /var/www/html
[root@webserver html]# setfacl -Rb .                  
[root@webserver html]# chmod -R g+s .                
[root@webserver html]# setfacl -Rdnm u:apache:rwx,g:devs:rwx .
[root@webserver html]# getfacl .
# file: .
# owner: apache
# group: devs
# flags: -s-
user::rwx
group::rwx
other::---
default:user::rwx
default:user:apache:rwx
default:group::rwx
default:group:devs:rwx
default:mask::rwx
default:other::---

[root@webserver html]# getfacl data.txt
# file: data.txt
# owner: apache
# group: devs
user::rw-
user:apache:rwx     #effective:rw-
group::rwx      #effective:rw-
group:devs:rwx    #effective:rw-
mask::rw-
other::---

数据.txt文件是通过 httpd/apache 执行的 PHP 脚本创建的。所有权已正确设置(阿帕奇/开发者),但它不是使用用户或组的可执行权限创建的。

该服务器运行的是 CentOS 版本 6.9(最终版)

有任何想法吗?

谢谢!

答案1

Linux 文件权限不受setgid目录上的位的影响。 设置组 ID导致使用目录的组 ID 而不是创建者的组 ID 创建文件。

新创建文件的权限由文件创建者指定,并受open或其他系统调用中的文件创建掩码 (umask) 的影响。要影响 PHP 中的文件权限,您可以使用fopenchmod等。

无需使用 ACL 即可完成此操作。这些命令完成相同的操作:

chmod g+s .
chgrp devs .

PHP 从 httpd 创建可执行文件似乎不寻常且不安全。我希望你知道自己在做什么。

相关内容