it-swarm.com.de

Standard-Dateiberechtigungen für PHP-Benutzer www-data

Ich habe ein PHP auf meinem Ubuntu-Rechner installiert. Das Webroot ist /var/www

Ich habe die Berechtigungen für diesen Ordner folgendermaßen festgelegt:

Sudo chown -R ftpuser: www-data/var/www

ftpuser ist der Benutzer, den ich eingerichtet habe, damit ich von einem anderen Computer im Netzwerk zu/var/www ftp kann. www-data ist der benutzer, den php benutzt. Ich habe es mit whoami von PHP überprüft.

Immer wenn ich eine neue Datei per FTP auf den Computer hochlade, hat die Gruppe keine Berechtigungen für die Datei. Wenn ich also versuche, über machine-name/new-file.php in meinem Browser darauf zuzugreifen, wird mir die Erlaubnis verweigert, und ich muss die neue Datei chmod holen.

Ich frage mich, ob es eine Möglichkeit gibt, dem Benutzer/der Gruppe "www-data" standardmäßig Zugriffsberechtigungen für neue Dateien zu erteilen, damit ich nicht jede neue Datei auf "chmod" speichern muss.

8
JD Isaacks

Sie könnten ACL verwenden. Um ACL für Ubuntu 10.10 einzurichten, mounten Sie zuerst die Dateisysteme mit der Option acl in/etc/fstab.

Sudo vim /etc/fstab

UUID = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/ext4 Standard, acl 0 1

Sudo mount -o remount,acl /

Bilden Sie dann eine Gruppe, zu der ein Benutzer zu diesem Zweck gehören kann.

Sudo groupadd developers
Sudo usermod -a -G developers $username

Der Benutzer muss sich abmelden und erneut anmelden, um Mitglied der Entwicklergruppe zu werden.

Tun Sie dies natürlich nicht, wenn Sie Inhalte im Verzeichnis/var/www haben, die Sie möchten, sondern nur, um die Einrichtung zu veranschaulichen:

Sudo rm -rf /var/www
Sudo mkdir -p /var/www/public
Sudo chown -R root.developers /var/www/public
Sudo chmod 0775 /var/www/public
Sudo chmod g+s /var/www/public
Sudo setfacl -d -m u::rwx,g::rwx,o::r-x /var/www/public

Ersetzen Sie dann die Verweise auf "/ var/www" durch "/ var/www/public" in einer Konfigurationsdatei und laden Sie sie erneut.

Sudo vim /etc/Apache2/sites-enabled/000-default
Sudo /etc/init.d/Apache2 reload

Wenn wir das Löschen und Umbenennen von allen Benutzern außer dem Benutzer, der die Datei erstellt hat, einschränken möchten:

Sudo chmod +t /var/www/public

Auf diese Weise ist es immer noch einfach, Verzeichnisse für Frameworks zu erstellen, die außerhalb des Apache-Dokumentenstamms existieren, oder von Servern beschreibbare Verzeichnisse zu erstellen.

Mit Apache beschreibbares Protokollverzeichnis:

Sudo mkdir /var/www/logs
Sudo chgrp www-data /var/www/logs
Sudo chmod 0770 /var/www/logs

Apache-lesbares Bibliotheksverzeichnis:

Sudo mkdir /var/www/lib
Sudo chgrp www-data /var/www/lib
Sudo chmod 0750 /var/www/lib
6
user8290

Ich bin mir sicher, dass Sie dies bereits geklärt haben. Dies ist also für alle mit ähnlichen Anforderungen gedacht

führen Sie den Befehl "Eigentümer ändern" in Ihrem Webroot-Ordner aus:

Sudo chown manny -R www

Dadurch werden Sie der Besitzer, der "manny" durch Ihren Benutzernamen ersetzt, sodass Sie im WWW-Ordner schreiben/lesen können

4
Manny

Wenn Ihr Webserver die Dateien nicht einmal lesen kann, ist es sehr wahrscheinlich, dass die Berechtigungen von new-file.php etwa 600 betragen (Lesen und Schreiben für Eigentümer). Suchen Sie in Ihrer FTP-Anwendung nach einer mask -Einstellung und stellen Sie sicher, dass es sich um eine Einstellung wie 007 handelt.

Wenn Ihre Webanwendung die Dateien ändern muss (oder andere Vorgänge, die nur vom Dateieigentümer ausgeführt werden können), benötigen Sie einen anderen Ansatz. Wenn Sie Apache verwenden, sollten Sie das itk MPM verwenden. Mit diesem Modul können Sie Apache veranlassen, die Dateien mit demselben Benutzer wie "ftpuser" auszuführen/zu öffnen. Wenn Sie weitere Informationen zu diesem Thema benötigen, fügen Sie einen Kommentar hinzu.

1
Lekensteyn