Die meisten Antworten hier sind nicht aus Sicherheitsgründen verfasst. Es ist gut, das Gefühl zu haben, dass das Laufen sudojedes Mal nicht sehr klug ist. Wenn Sie einen Tippfehler machen (zum Beispiel eine einzelne Leerstelle an einer falschen Stelle: sudo rm -rf / var/www/dir Nicht ausführen! ), Können Sie Ihr System in den Papierkorb werfen.
Hinweis: Ab Apache 2.4.7 / Ubuntu 14.04 /var/wwwwurde verschoben, um /var/www/htmldie Befehle in dieser Antwort entsprechend anzupassen .
Sehen:
Schlechte Ideen:
chmod 777(sagarchalise) - Dies ermöglicht es jedem, der Zugriff auf Ihr System hat, in die Verzeichnisse und Dateien zu schreiben und somit dem Eindringling zu ermöglichen, jeden Code unter dem www-dataBenutzer auszuführen
chgrp -R www-data $HOME(cob) - Dies ermöglicht www-datadas Lesen oder Schreiben von Dateien im Home-Verzeichnis. Dies berücksichtigt nicht die Regel des geringsten Privilegs
chown -R $USER:$USER /var/www(kv1dr) - Sofern die Welt keine Leseberechtigung für hat /var/www, kann der Webserver, unter dem ausgeführt www-datawird, die Dateien nicht lesen (liefern) . Wenn es sich bei der Datei um ein öffentlich zugängliches einfaches HTML-Dokument handelt, ist es möglicherweise kein Problem, wenn die Welt die Datei lesen kann. Handelt es sich bei der Datei jedoch um eine PHP-Datei mit Kennwörtern, ist dies der Fall.
HINWEIS : In den folgenden Lösungen habe ich www-dataSchreibrechte gewährt . Es /usr/share/doc/base-passwd/users-and-groups.txt.gzheißt jedoch:
www-daten
Einige Webserver werden als WWW-Daten ausgeführt. Webinhalte sollten nicht im Besitz dieses Benutzers sein, da sonst ein kompromittierter Webserver eine Website neu schreiben kann. Von Webservern geschriebene Daten gehören www-data.
Gewähren Sie der Gruppe nach Möglichkeit keine Schreibrechte www-data. www-dataEs muss nur in der Lage sein, die Dateien zu lesen , damit der Webserver sie bereitstellen kann. Der einzige Fall, in dem www-dataSchreibberechtigungen erforderlich sind, betrifft Verzeichnisse, in denen Uploads und andere zu schreibende Speicherorte gespeichert sind.
Lösung 1
Fügen Sie sich der www-dataGruppe hinzu und setzen Sie das setgid-Bit im /var/wwwVerzeichnis so, dass alle neu erstellten Dateien auch diese Gruppe erben.
sudo gpasswd -a "$USER" www-data
Korrigieren Sie zuvor erstellte Dateien (vorausgesetzt, Sie sind der einzige Benutzer von /var/www):
sudo chown -R "$USER":www-data /var/www
find /var/www -type f -exec chmod 0660 {} \;
sudo find /var/www -type d -exec chmod 2770 {} \;
(Noch sicherer: Verwenden Sie 640oder 2750und manuell chmod g+w file-or-dir, die vom Webserver beschreibbar sein müssen.)
Lösung 2
Erstellen Sie für jedes Projekt einen Symlink zu Ihrem Home-Verzeichnis. Angenommen, Ihr Projekt befindet sich in ~/projects/foound Sie möchten, dass es sich in befindet /var/www/foo, führen Sie Folgendes aus:
sudo ln -sT ~/projects/foo /var/www/foo
Wenn in Ihrem Ausgangsverzeichnis other(aus Sicherheitsgründen) kein Ausführungsbit (absteigend) gesetzt ist , ändern Sie die Gruppe in www-data, setzen Sie jedoch nur das Ausführungsbit (kein Lesen / Schreiben). Gehen Sie für den ~/projectsOrdner genauso vor, da er möglicherweise andere Projekte als www enthält. (Dies ist nicht erforderlich, sudowenn Sie Ihren Benutzer zuvor zur www-dataGruppe hinzugefügt haben .)
sudo chgrp www-data ~ ~/projects
chmod 710 ~ ~/projects
Setzen Sie die Gruppe www-dataauf Ein ~/projects/foound erlauben Sie dem Webserver, Dateien und Dateien + Verzeichnisse zu lesen und zu schreiben und in Verzeichnisse zu gelangen:
sudo chgrp www-data ~/projects/foo
find ~/projects/foo -type f -exec chmod 660 {} \;
find ~/projects/foo -type d -exec chmod 2770 {} \;
Noch sicherer: Verwenden Sie standardmäßig 640 und 2750 und manuell chmod-Dateien und -Verzeichnisse, die vom Webserver-Benutzer beschreibbar sein müssen. Das setgid-Bit sollte nur hinzugefügt werden, wenn ~/projects/foodie Gruppe auf jede neu erstellte Datei zugreifen soll .
Von nun an können Sie auf Ihre Site unter zugreifen http://localhost/foound Ihre Projektdateien in bearbeiten ~/projects/foo.
Siehe auch