www-Datenberechtigungen?

108

Ich habe also ein Verzeichnis in / var / www (Kuchen genannt) und muss zulassen, dass www-Daten darauf schreiben, aber ich möchte auch darauf schreiben (ohne sudo verwenden zu müssen). Ich habe Angst, die Berechtigungen auf 777 zu ändern, falls ein anderer Benutzer auf meinem Computer (oder ein Hacker) versucht, Dateien in diesem Verzeichnis zu ändern. Wie erlaube ich nur mir und Apaches WWW-Daten den Zugriff?

q3d
quelle

Antworten:

168
sudo chown -R yourname:www-data cake

dann

sudo chmod -R g+s cake

Der erste Befehl ändert Eigentümer und Gruppe.

Der zweite Befehl fügt das Attribut s hinzu, mit dem neue Dateien und Verzeichnisse innerhalb von Cake mit denselben Gruppenberechtigungen gespeichert werden.

James L.
quelle
3
Warum ist das chmod g + s rekursiv?
Ben Rogmans
wusste nichts über g + s. sehr sehr praktisch!
FRAGA
1
Was kann der Benutzer mit Dateien tun, die von www-data in cake selbst erstellt wurden, und mit Dateien, die von www-data in einem Verzeichnis erstellt wurden, das von www-data erstellt wurde? Zum Beispiel über Bearbeitungs-, Umbenennungs- und Löschvorgänge? Soweit ich weiß, ist das Umbenennen und Löschen innerhalb eines von www-data erstellten Verzeichnisses nicht möglich, und das Bearbeiten von durch www-data erstellten Dateien ist für Benutzer überhaupt nicht möglich.
Qdinar
49

Wie in einem Artikel von Slicehost angegeben :

Benutzereinrichtung

Beginnen wir also damit, den Hauptbenutzer zur Apache-Benutzergruppe hinzuzufügen:

sudo usermod -a -G www-data demo

Dadurch wird der Benutzer 'Demo' zur Gruppe 'www-data' hinzugefügt. Stellen Sie sicher, dass Sie mit dem oben gezeigten Befehl usermod sowohl die Optionen -a als auch -G verwenden.

Sie müssen sich abmelden und erneut anmelden, um die Gruppenänderung zu aktivieren.

Überprüfen Sie jetzt die Gruppen:

groups
...
# demo www-data

Jetzt bin ich Mitglied in zwei Gruppen: Meine eigene (Demo) und die Apache-Gruppe (www-Daten).

Ordner einrichten

Jetzt müssen wir sicherstellen, dass der Ordner public_html dem Hauptbenutzer gehört (Demo) und Teil der Apache-Gruppe ist (www-data).

Lassen Sie uns das einrichten:

sudo chgrp -R www-data /home/demo/public_html

Während wir über Berechtigungen sprechen, füge ich einen kurzen Hinweis zum Befehl sudo hinzu: Es ist eine gute Angewohnheit, absolute Pfade (/ home / demo / public_html) wie oben gezeigt anstelle relativer Pfade (~ / public_html) zu verwenden. Es stellt sicher, dass sudo am richtigen Ort verwendet wird.

Wenn Sie einen public_html-Ordner mit Symlinks haben, gehen Sie mit diesem Befehl vorsichtig um, da er den Symlinks folgt. Ändern Sie in den Fällen eines funktionierenden Ordners public_html jeden Ordner von Hand.

Setgid

Bisher gut, aber denken Sie daran, dass der Befehl, den wir gerade gegeben haben, nur vorhandene Ordner betrifft. Was ist mit etwas Neuem?

Wir können den Besitz so einstellen, dass alles Neue auch in der Gruppe "www-data" enthalten ist.

Der erste Befehl ändert die Berechtigungen für das Verzeichnis public_html so, dass sie das Bit "setgid" enthalten:

sudo chmod 2750 /home/demo/public_html

Dadurch wird sichergestellt, dass alle neuen Dateien die Gruppe 'www-data' erhalten. Wenn Sie Unterverzeichnisse haben, möchten Sie diesen Befehl für jedes Unterverzeichnis ausführen (diese Art von Berechtigung funktioniert nicht mit '-R'). Glücklicherweise werden neue Unterverzeichnisse erstellt, wobei das Bit 'setgid' automatisch gesetzt wird.

Wenn wir Schreibzugriff auf Apache zulassen müssen, beispielsweise auf ein Upload-Verzeichnis, legen Sie die Berechtigungen für dieses Verzeichnis wie folgt fest:

sudo chmod 2770 /home/demo/public_html/domain1.com/public/uploads

Die Berechtigungen müssen nur einmal festgelegt werden, da neuen Dateien automatisch der richtige Besitz zugewiesen wird.

Kwadz
quelle
Diese Lösung funktioniert bei mir. Vorher starte ich den Server immer vom Terminal mit dem Root-Benutzer. Mit dieser Lösung kann ich Dateien in ein Verzeichnis mit der Berechtigung 770 hochladen. Das ist großartig, da ich vorher nur Dateien mit der Berechtigung 777 hochladen kann.
Ifan Iqbal