Benutzer hat keine Schreibberechtigung für seine eigenen Ordner?

Benutzer hat keine Schreibberechtigung für seine eigenen Ordner?

Ich arbeite daran Debian10 with php8 fpm + apache2, ich habe einen neuen Benutzer mit einer Gruppe erstellt username:usernameund ein Home-Verzeichnis für diesen Benutzer eingerichtet, das sich unter befindet

/home/username/www

natürlich habe ich chmod -Ralle Ordner und Dateien zu username:username, bevor es www-Daten waren, als die Dateien darin waren/var/html

also im Grunde habe ich ein kleines Skript, das versucht, einen Cache-Ordner zu schreiben, aber es funktioniert nicht, wenn ich die Ordner mit CHMOD auf Benutzername:Benutzername ändere. Es funktioniert nur, wenn ich die Ordner mit CHMOD auf WWW-Daten ändere?

der Cache-Ordner chown 755, und es funktioniert gut, wenn im Besitz von www-datanichtusername

usernameist es möglich , eine Schreibberechtigung wie zuzulassen www-data?

PS: Der Benutzername ist ein Beispiel für den echten

Antwort1

AmöglichAnsatz, um usernamedie Kontrolle über Dinge zu behalten, während www-dataaus Sicherheitsgründen nur Lesezugriff besteht und Schreibzugriff nur dort besteht, wo es nötig ist:

  • usernameAls Eigentümer und www-dataals Gruppe festlegen

    chown -R username:www-data /home/username/www
    
  • Geben Sie dem Besitzer vollen Zugriff (Lesen/Schreiben/Ausführen: 7) und der Gruppe nur Lesezugriff (Lesen/Ausführen: 5). Die OtherGruppe hat hier keinen Zugriff (0).

    chmod -R 750 /home/username/www
    
  • Gewähren Sie Schreibzugriff dort, www-datawo er benötigt wird:

    chmod -R 770 /home/username/www/path/writable/by/webserver
    

Vom Webserver erstellte Dateien bleiben vollständig sein Eigentum ( www-data:www-data), der Verzeichnisbesitzer ( username) kann sie jedoch weiterhin verschieben.

Antwort2

Wenn Sie PHP-FPM installieren, wird standardmäßig ein einzelner Pool installiert, der als www-dataBenutzer ausgeführt wird. Wenn Sie userund groupin /etc/php/8.0/fpm/pool.d/www.confden richtigen Benutzer ändern, wird Ihr Skript als Benutzer ausgeführt und www-databenötigt keine Schreibberechtigungen.

Ihre Konfiguration enthält standardmäßig diese beiden Zeilen:

user = www-data
group = www-data

Ersetzen Sie diese Zeilen durch:

user = username
group = username

Starten Sie den FPM-Daemon neu

service php8.0-fpm restart

verwandte Informationen