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-data
Gruppe 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.conf
Datei 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