服务器创建的子目录存在 setfacl 问题

服务器创建的子目录存在 setfacl 问题

我在继承由服务器执行的 PHP 脚本创建的文件夹的父权限时遇到问题。

我已经创建了部署者用户,将其添加到www-data组并设置了初始文件夹和文件配置,如下所示。

usermod -a -G www-data deployer
chown -R www-data:www-data /var/www
chmod -R 0775 /var/www
find /var/www -type d -exec chmod 2775 {} +;   
find /var/www -type f -exec chmod 0664 {} +;

像下面这样编辑php5-fpm.conf文件并添加umask 0002

umask 0002
pre-start exec /usr/lib/php5/php5-fpm-checkconf
respawn
exec /usr/sbin/php5-fpm --nodaemonize --fpm-config /etc/php5/fpm/php-fpm.co

这是我的相关部分/etc/php5/fpm/pool.d/www.conf,nginx 用户也是如此www-data

user  = www-data
group = www-data

listen = /var/run/php5-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0666

我已经执行了如下 setfacl 命令:

setfacl -Rm u:www-data:rwx,u:deployer:rwx,g:www-data:rwx /var/www/site/storage
setfacl -Rdm u:www-data:rwx,u:deployer:rwx,g:www-data:rwx /var/www/site/storage

但是,当服务器执行的 PHP 脚本尝试在部署者用户创建的存储文件夹中创建文件夹时,新创建的文件夹不会继承父权限。

drwxrwsr-x+ deployer www-data storage
drwxr-sr-x+ www-data www-data storage-cache-folder 
drwxr-sr-x+ www-data www-data storage-cache-folder-subfolder

我错过了什么?

答案1

我不是 PHP 开发人员,但作为系统管理员,我可以告诉您,有一种解决方法可以解决您遇到的问题。为了向 PHP 动态创建的文件授予特定权限,您可以使用 ACL 设置默认权限,也可以使用 PHP chmod:

   chmod($file, 0777); for example (change it whatever perm you'd like)

   setfacl -d -m o::rwx /var/www/site/storage (or add the group/user you'd like)

ACL -d 选项将把该目录设置为默认提供/给定的权限,因此在那里创建的任何内容都具有该默认权限。

请点击此处以更好地了解您所追求的目标:

   http://php.net/manual/en/function.umask.php

相关内容