Tengo problemas para heredar los permisos principales para las carpetas creadas por el script PHP que ejecuta el servidor.
Creé el usuario del implementador, lo agregué al www-data
grupo y configuré la carpeta inicial y la configuración del archivo como se muestra a continuación.
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 {} +;
Editó el php5-fpm.conf
archivo como se muestra a continuación agregando 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
Y esta es la parte relacionada de mi /etc/php5/fpm/pool.d/www.conf
, el usuario de nginx también lo es 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
Ejecuté el comando setfacl como se muestra a continuación:
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
Sin embargo, cuando un script PHP, ejecutado por el servidor, intenta crear una carpeta dentro de la carpeta de almacenamiento creada por el usuario implementador, las carpetas recién creadas no heredan los permisos principales.
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
¿Qué me estoy perdiendo?
Respuesta1
No soy desarrollador de PHP, pero como administrador de sistemas puedo decirle que existe una solución alternativa para solucionar el problema que tiene. Para otorgar permiso específico a archivos creados dinámicamente por PHP, puede configurar el permiso predeterminado usando ACL o 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)
La opción ACL -d establecerá ese directorio como permiso predeterminado proporcionado/otorgado para que cualquier cosa creada allí tenga ese permiso predeterminado.
Consulte aquí para comprender mejor lo que busca:
http://php.net/manual/en/function.umask.php