Ich möchte aufhören, sudo
jedes Mal zu verwenden, wenn ich arbeite /var/www
. Wie kann ich das machen? Ich möchte einfach alle meine Websites in dieses Verzeichnis stellen und mit ihnen arbeiten, ohne allzu große Schmerzen zu haben.
173
sudo -u www-data
diesudoers
Datei weiterhin zu verwenden, sich jedoch darauf zu beschränken , nur in der Lage zu seinsudo www-data
(und nicht in sudo root). Siehe serverfault.com/questions/295429/…Antworten:
Die meisten Antworten hier sind nicht aus Sicherheitsgründen verfasst. Es ist gut, das Gefühl zu haben, dass das Laufen
sudo
jedes 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/www
wurde verschoben, um/var/www/html
die Befehle in dieser Antwort entsprechend anzupassen .Sehen:
Wo kann ich meine lokale Website platzieren, beginnend mit der 2.4.7-Version von apache2?
Warum wurde das Apache2-WWW-Verzeichnis nach / var / www / html verschoben?
Ändern des Standarddokumentstamms für den HTTP-Server
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 demwww-data
Benutzer auszuführenchgrp -R www-data $HOME
(cob) - Dies ermöglichtwww-data
das Lesen oder Schreiben von Dateien im Home-Verzeichnis. Dies berücksichtigt nicht die Regel des geringsten Privilegschown -R $USER:$USER /var/www
(kv1dr) - Sofern die Welt keine Leseberechtigung für hat/var/www
, kann der Webserver, unter dem ausgeführtwww-data
wird, 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-data
Schreibrechte gewährt . Es/usr/share/doc/base-passwd/users-and-groups.txt.gz
heißt jedoch:Gewähren Sie der Gruppe nach Möglichkeit keine Schreibrechte
www-data
.www-data
Es muss nur in der Lage sein, die Dateien zu lesen , damit der Webserver sie bereitstellen kann. Der einzige Fall, in demwww-data
Schreibberechtigungen erforderlich sind, betrifft Verzeichnisse, in denen Uploads und andere zu schreibende Speicherorte gespeichert sind.Lösung 1
Fügen Sie sich der
www-data
Gruppe hinzu und setzen Sie das setgid-Bit im/var/www
Verzeichnis so, dass alle neu erstellten Dateien auch diese Gruppe erben.Korrigieren Sie zuvor erstellte Dateien (vorausgesetzt, Sie sind der einzige Benutzer von
/var/www
):(Noch sicherer: Verwenden Sie
640
oder2750
und manuellchmod 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/foo
und Sie möchten, dass es sich in befindet/var/www/foo
, führen Sie Folgendes aus:Wenn in Ihrem Ausgangsverzeichnis
other
(aus Sicherheitsgründen) kein Ausführungsbit (absteigend) gesetzt ist , ändern Sie die Gruppe inwww-data
, setzen Sie jedoch nur das Ausführungsbit (kein Lesen / Schreiben). Gehen Sie für den~/projects
Ordner genauso vor, da er möglicherweise andere Projekte als www enthält. (Dies ist nicht erforderlich,sudo
wenn Sie Ihren Benutzer zuvor zurwww-data
Gruppe hinzugefügt haben .)Setzen Sie die Gruppe
www-data
auf Ein~/projects/foo
und erlauben Sie dem Webserver, Dateien und Dateien + Verzeichnisse zu lesen und zu schreiben und in Verzeichnisse zu gelangen: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/foo
die Gruppe auf jede neu erstellte Datei zugreifen soll .Von nun an können Sie auf Ihre Site unter zugreifen
http://localhost/foo
und Ihre Projektdateien in bearbeiten~/projects/foo
.Siehe auch
quelle
sudo su www-data
? Kombiniert mit einer andersfarbigen Eingabeaufforderung, um klarer zu machen, dass es sich um die Shell eines anderen Benutzers handelt, und einer Richtlinie, die immer das entsprechende xterm auf - zum Beispiel - den virtuellen Desktop 4 legt, damit Sie sich daran gewöhnen, daran zu gewöhnen Verwirrung vermeiden?gedit
. Ich habe nie untersucht, ob das Ausführen eines GUI-Programms unter einem anderen Benutzer in der aktuellen Sitzung sicher ist oder nicht. Dies wäre eine interessante Frage.setfacl -d u::rwX,g::rX /var/www
hat den lustigen Effekt, dass der Standardmodus 0750 (oder 0640) wird, auch wenn die umask Null ist. Es mag eine gute Idee sein, wenn Sie Dateien vermeiden möchten, auf die/var/www
von der Welt aus nicht zugegriffen werden kann, sie jedoch nicht benötigen./var/www/app01
hat Besitzapp01:app01
und dann wird derwww-data
Benutzer derapp01
Gruppe hinzugefügt ? Oder wird das etwas kaputt machen?Anstatt meine Websites in / var / www zu speichern, platziere ich dort Links zu den Websites, die sich in meinem privaten Ordner befinden. Ich kann meine Websites frei bearbeiten oder Seiten hinzufügen. Wenn ich mit Änderungen zufrieden bin, gehe ich per FTP zu einem Hosting-Unternehmen, wo mein Domain-Name verlinkt ist.
quelle
Wenn Sie / var / www für seine Gruppe schreibbar machen und sich der Gruppe hinzufügen, müssen Sie sudo nicht verwenden, während Sie noch ziemlich sicher sind. Versuche dies:
Sie sollten dann problemlos
/var/www/
Dateien bearbeiten können.In der ersten Zeile werden Sie der
www-data
Gruppe hinzugefügt, in der zweiten Zeile werden alle Dateien mit fehlerhaftem Besitz gelöscht, und in der dritten Zeile werden alle Benutzer, die Mitglieder derwww-data
Gruppe sind, zum Lesen und Schreiben aller Dateien aufgefordert/var/www
.quelle
Nicht
Setzen Sie die Dateiberechtigungen nicht auf 777 (schreibgeschützt).
Dies ist eine erhebliche Sicherheitslücke, insbesondere wenn Sie serverseitiges Scripting wie PHP aktivieren. Unprivilegierte Prozesse sollten nicht in der Lage sein, in Dateien zu schreiben, die sich auf die Website auswirken, oder bei Verwendung von serverseitigem Scripting beliebigen Code auszuführen.
Fügen Sie sich nicht als Mitglied der Gruppe www-data hinzu und erteilen Sie ihr Schreibrechte
Der Zweck dieser Gruppe besteht darin, dass es sich um eine nicht privilegierte Gruppe handelt, als die die Serverprozesse ausgeführt werden. Sie sollten aus den gleichen Gründen wie oben nur Lesezugriff auf die Website-Dateien haben, sofern dies möglich ist.
Ändern Sie nicht die Berechtigungen der Apache-Prozesse
Die untergeordneten Apache-Prozesse
www-data
werden standardmäßig als Benutzer und Gruppe ausgeführt. Dies sollte nicht geändert werden. Dies ist nur eine Möglichkeit, dem Dateisystem keine Schreibberechtigung zu erteilen.Unter bestimmten Umständen möchten Sie, dass Ihre serverseitigen Skripts in die Lage versetzt werden, in Dateien zu schreiben. In diesem Fall sollten nur diese Dateien von beschreibbar gemacht werden,
www-data
und es muss darauf geachtet werden, dass die Sicherheit gewährleistet ist.DOS
Stellen Sie die Dateien so ein, dass sie Ihnen gehören
Wenn Sie die einzige oder die übliche Person sind, die bestimmte Dateien auf der Website ändert, ist es absolut sinnvoll, nur den Besitz dieser Dateien zu übernehmen. Setzen Sie ihren Besitzer auf
<your username>
.Sie müssen die Serverberechtigungen dafür nicht ändern, da der Server auch dann weiterhin schreibgeschützt ist, wenn die Dateien Ihnen gehören.
Wählen Sie einen vernünftigen Speicherort für die Dateien (mit DocumentRoot )
Wenn
/var/www
dies keinen Sinn ergibt, können Sie sie gerne an einer anderen Stelle platzieren. Wenn sie spezifisch für Ihre eigene Entwicklung oder Ihr Testen sind, können Sie sie in Ihrem Home-Verzeichnis ablegen. Oder Sie können einige Verzeichnisse in einrichten/srv
.Wenn Sie Gruppenschreibzugriff gewähren möchten, erstellen Sie zu diesem Zweck eine neue Gruppe
Verwenden Sie eine Systemgruppe nicht erneut, da diese aus Sicherheitsgründen in der Regel den Zugriff haben, den sie derzeit haben, und nicht mehr.
quelle
So einfach ist das. Sie müssen weder Apache 'UserDir' aktivieren (nicht empfohlen) noch mit 'www-data'-Gruppen in Verlegenheit bringen (Apache-Gruppe bei Fedora)
Erstellen Sie einfach Ihr Projektverzeichnis
/var/www/html
Dann geben Sie einfach das Projektverzeichnis an Ihren Benutzer weiter.
Jetzt können Sie als normaler Benutzer mit einem beliebigen Editor, einer IDE Ihrer Wahl, an Ihrem Projektordner arbeiten. Keine mehr sudos :)
quelle
/var/www
selbst, sondern von Unterverzeichnissen.chmod in / var auf www, um dem Besitzer Zugriff zu gewähren, und chown, um sicherzustellen, dass Sie es besitzen. Wahrscheinlich eine blöde Idee, aber es würde definitiv funktionieren.
quelle
/var
, just/var/www
und / oder dessen Inhalt nicht ändern .Sie können eine www-Sitzung in einem Terminal durch starten
Kombiniert mit einer andersfarbigen Eingabeaufforderung *, um klarer zu machen, dass es sich um die Shell eines anderen Benutzers handelt, und einer Richtlinie, die immer das entsprechende xterm (und den entsprechenden Editor usw.) auf dem virtuellen Desktop 4 installiert, damit man gewöhnt sich daran, um Verwirrung zu vermeiden.
*) Erstellen Sie für eine andersfarbige Eingabeaufforderung mit einem anderen Zeichen eine Datei / etc / prompt wie folgt:
und es
/etc/bash.bashrc
zum Beispiel von Quelle .Als zusätzliches Hilfsmittel zur Unterscheidung können Sie Ihre Dateien jederzeit mit einem Alias "Bearbeiten" oder einem Symlink bearbeiten, der abhängig von Ihrer Identität (Taylor- / WWW-Daten) entweder auf gedit oder Mousepad, vim oder pico verweist. Oder Sie können verschiedene Editorprofile verwenden. Zumindest in gedit können Sie Ihre Einstellungen auf schwarzen Text auf weißem Grund oder weißen Text auf schwarzem Grund festlegen.
Ich habe nur eine solche Richtlinie für die Arbeit als Root, daher bin ich mir nicht sicher, wie gut sie für die Arbeit mit WWW-Daten geeignet ist. In Kombination mit SSH-Sitzungen mit verschiedenen Hosts, die ihre eigenen Eingabeaufforderungen haben, hat es mich nicht davon abgehalten, manchmal falsch zu liegen, aber wenn es passiert, merke ich schnell, was falsch ist, und es passiert selten.
hinweis: Das prompt-script ist teilweise eine kopie der manpage von bash.
quelle