problema setfacl em subdiretórios criados pelo servidor

problema setfacl em subdiretórios criados pelo servidor

Estou enfrentando problemas ao herdar as permissões pai para as pastas criadas pelo script PHP que é executado pelo servidor.

Eu criei o usuário implantador, adicionei ao www-datagrupo e defini a pasta inicial e a configuração do arquivo como abaixo.

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 {} +;

Editei o php5-fpm.confarquivo como abaixo adicionando 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

E esta é a parte relacionada do meu /etc/php5/fpm/pool.d/www.confusuário nginx também 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

Executei o comando setfacl conforme abaixo:

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

No entanto, quando um script PHP, executado pelo servidor, tenta criar uma pasta dentro da pasta de armazenamento criada pelo usuário implementador, as pastas recém-criadas não herdam as permissões pai.

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

o que estou perdendo?

Responder1

Não sou um desenvolvedor de PHP, mas como administrador de sistema posso dizer que existe uma solução alternativa para corrigir o problema que você está enfrentando. Para dar permissão específica para arquivos criados dinamicamente pelo PHP você pode definir a permissão padrão usando ACLs ou usando 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)

A opção ACL -d definirá esse diretório como permissões padrão fornecidas/dadas, para que qualquer coisa criada lá tenha essa permissão padrão.

Verifique aqui para entender melhor o que você procura:

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

informação relacionada