Wie mache ich Ordner immer schreibbar von Apache?

Ich möchte einen Ordner immer von PHP schreibbar machen.

Ich habe die Ordnerberechtigung in temprorarly auf 777 geändert, aber der Inhalt des Ordners wird von einem FTP-Benutzer hochgeladen, sodass ich jedes Mal, wenn ich das Skript erneut ausführe, Folgendes erhalte:

Warning: file_get_contents(/var/www/html/.../file.txt): failed to open stream: Permission denied in /var/www/html/.../autoimport.php on line 25

Dasselbe passiert mir in diesem Skript, in dem ich den Inhalt des Fehlers zeige.log. Ich ändere es in 777, aber wenn es neu generiert wird, habe ich den Zugriff wieder verloren.

Warning: fopen(/var/log/apache2/error.log): failed to open stream: Permission denied in /var/www/html/admin/errorlog.php on line 48
Could not get lines from file - /var/log/apache2/error.log
Author: Giacomo1968, 2014-11-20

1 answers

Normalerweise erstelle ich in meinen Server-Setups eine Gruppe für die Website und verwende dann eine Kombination aus setgid und umask, um sicherzustellen, dass Dateien von den gewünschten Anwendungen schreibbar bleiben. Schritt für Schritt Anleitung unten:

1/ Erstellen Sie eine neue Gruppe für Ihre website:

$ sudo groupadd web-grp

2 / Fügen Sie den Benutzer hinzu, den der Webserver als Gruppe ausführt:

$ sudo gpasswd -a www-data web-grp

3/ chown den diretories und Dateien, die Sie wollen, dass der server haben Zugriff auf: -

$ sudo chown -R :web-grp /path/to/website

4 / Setzen Sie das GID-Bit und andere Berechtigungen für diese Verzeichnisse:

$ sudo chmod -R ug+rw /path/to/website
$ find /path/to/website -type d -exec chmod g+xs {} \;

5 / Setzen Sie die Umask Ihres FTP-Programms auf 002. Dies hängt von Ihrem FTP-Client und Server ab, suchen Sie nach, um herauszufinden, wie dies für Ihr spezielles Setup zu tun ist.

6 / Starten Sie Ihren Webserver neu, um die neue Gruppenberechtigung zu erhalten:

$ sudo service apache2 restart

Das Interessante daran ist, dass das Bit setgid in diesen Verzeichnissen dazu führt, dass neue Dateien, die in den Verzeichnissen erstellt wurden, standardmäßig dieselbe Gruppe haben. Dies bedeutet, dass Sie nicht brauchen 777 berechtigungen-was bedeutet, dass Sie mehr Sicherheit sowie ein System haben, das weiter funktionieren sollte.

Der Teil umask ist ebenfalls wichtig. Neue Dateien haben die Berechtigungsbits in der umask entfernt, also, wenn Ihre umask ist 022, die neuen Dateien werden nicht Gruppe beschreibbar sein, und die Dinge werden nicht sehr gut funktionieren.

Ich benutze dieses Setup seit einigen Jahren sehr erfolgreich.

 1
Author: ryanmce,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-02-08 18:18:42