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

8

Ich habe ein PHP auf meinem Ubuntu-Computer installiert. Das Webstammverzeichnis 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 nach / var / www ftp kann. www-data wird vom benutzer php verwendet. Ich habe es mit whoamiPHP ü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, in meinem Browser über darauf zuzugreifen, wird mir machine-name/new-file.phpdie Erlaubnis verweigert und ich muss gehen und chmoddie neue Datei.

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

JD Isaacks
quelle

Antworten:

6

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-Standardeinstellungen, acl 0 1

sudo mount -o remount,acl /

Erstellen 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 gewünschten Verzeichnis / var / www haben, sondern nur, um die Einrichtung für den Start 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 neu.

sudo vim /etc/apache2/sites-enabled/000-default
sudo /etc/init.d/apache2 reload

Wenn wir das Löschen und Umbenennen von allen 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-Dokumentstamms vorhanden sind, oder Server-beschreibbare Verzeichnisse zu erstellen.

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

quelle
Das funktionierte perfekt für mich, aber ich interessiert sein würden , wenn Sie erklären könnten , was die chmod g+sund setfaclBefehle tat (und ihre Parameter).
Greg
4

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

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

sudo chown manny -R www

Dadurch werden Sie als Eigentümer "manny" durch Ihren Benutzernamen ersetzen, sodass Sie im WWW-Ordner schreiben / lesen können

Manny
quelle
1

Wenn Ihr Webserver die Dateien nicht einmal lesen kann, ist es sehr wahrscheinlich, dass die Berechtigungen von new-file.phpungefähr 600 liegen (Lesen und Schreiben für den Eigentümer). Suchen Sie in Ihrer FTP-Anwendung nach einer Umask- Einstellung und stellen Sie sicher, dass es sich um 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 die Verwendung des itk MPM in Betracht ziehen . 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.

Lekensteyn
quelle