Проблема 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