Setfacl-Problem bei vom Server erstellten Unterverzeichnissen

Setfacl-Problem bei vom Server erstellten Unterverzeichnissen

Ich habe Probleme beim Erben der übergeordneten Berechtigungen für die Ordner, die durch ein vom Server ausgeführtes PHP-Skript erstellt wurden.

Ich habe den Deployer-Benutzer erstellt, zur www-dataGruppe hinzugefügt und die anfängliche Ordner- und Dateikonfiguration wie unten festgelegt.

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

Habe die php5-fpm.confDatei wie unten durch Hinzufügen bearbeitet 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

Und dies ist der zugehörige Teil meines /etc/php5/fpm/pool.d/www.conf, Nginx-Benutzers auch 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

Ich habe den Befehl setfacl wie folgt ausgeführt:

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

Wenn jedoch ein vom Server ausgeführtes PHP-Skript versucht, einen Ordner innerhalb des vom Deployer-Benutzer erstellten Speicherordners zu erstellen, erben neu erstellte Ordner nicht die übergeordneten Berechtigungen.

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

Was vermisse ich?

Antwort1

Ich bin kein PHP-Entwickler, aber als Systemadministrator kann ich Ihnen sagen, dass es einen Workaround gibt, um Ihr Problem zu beheben. Um dynamisch von PHP erstellten Dateien bestimmte Berechtigungen zu erteilen, können Sie entweder die Standardberechtigung mithilfe von ACLs oder mithilfe von PHP chmod festlegen:

   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)

Mit der ACL-Option -d wird das Verzeichnis als Standardverzeichnis mit den bereitgestellten/erteilten Berechtigungen festgelegt, sodass alles, was dort erstellt wird, über diese Standardberechtigung verfügt.

Schauen Sie hier nach, um besser zu verstehen, wonach Sie suchen:

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

verwandte Informationen