Beste Berechtigungen / Eigentumsrechte für Apache Document Root

14

Ich benötige Hilfe beim Festlegen der korrekten Berechtigungen oder des Besitzes des Apache-Dokumentenstamms. Folgendes brauche ich:

  • verschiedene Webseiten gespeichert in /var/www/html/<site>
  • Zwei Benutzer sollten die Websites über ssh aktualisieren / verwalten
  • Besitz sollte anders sein als der Apache-Benutzer (aus Sicherheitsgründen)

Wie kann ich das machen? Im Moment sind alle Dateien von der Welt beschreibbar, was nicht gut ist. Auf dem Server wird CentOS 5.5 ausgeführt

Vielen Dank

Marco
quelle
Eine ausführlichere Antwort mit anderen Optionen zum Sichern eines Dokuments finden Sie unter serverfault.com/questions/357108/…
Quinn Comendant,
Ich denke, es ist besser, jede Website an einem separaten Ort zu speichern (nicht beide bei DocumentRoot ablegen, 2 virtuelle Hosts verwenden), dann besitzt jeder Sysadmin-Benutzer nur seine eigene Website und legt den Gruppeneigentümer beider Websiteverzeichnisse als Apache-Gruppe fest
die Buchhalter

Antworten:

22

Erstellen Sie eine neue Gruppe

groupadd webadmin

Fügen Sie Ihre Benutzer der Gruppe hinzu

usermod -a -G webadmin user1
usermod -a -G webadmin user2

Ändern Sie den Besitz des Site-Verzeichnisses

chown root:webadmin /var/www/html/

Ändern Sie die Berechtigungen des Site-Verzeichnisses

chmod 2775 /var/www/html/ -R

Jetzt kann jeder die Dateien lesen (einschließlich des Apache-Benutzers), aber nur root und webadmin können ihren Inhalt ändern.

Andy
quelle
Das sieht gut aus. Aber was passiert, wenn ein Benutzer neue Dateien erstellt oder aktualisierte Dateien kopiert? Werden diese Berechtigungen automatisch angewendet? Oder muss er jedes Mal chownen und chmoden?
Marco
Kopierte Dateien behalten Berechtigungen / Eigentumsrechte. Standarddateiberechtigungen für neue Dateien werden vom umaskBefehl verarbeitet. Weitere Informationen hier osr507doc.sco.com/de/OSUserG/_default_perms_new_file.html
Andy
3
Sie könnten das Verzeichnis setgid webadmin verwenden, um bei neuen Dateien zu helfen
covener
1
^ +1. Der schnelle Weg wäre: >> chmod 2775 -R / var / www / html /
James Broadhead
@ James ta, aktualisiert
Andy
2

Ich bevorzuge es, die Partition mit -o acl zu mounten. Auf diese Weise können Sie mit dem Befehl setfacl fein abgestimmte Berechtigungen für Dateien und Ordner festlegen, anstatt nur Benutzergruppen-andere Berechtigungen anzugeben.

Fügen Sie also acl in Ihre Partitionszeile in / etc / fstab ein oder hängen Sie es mit mount -o remount, acl / mnt / xy, wieder ein und geben Sie dann niemandem den Besitz Ihres Webverzeichnisses: nobody. Chmod bis 770, und verwenden Sie setfacl, um Schreibberechtigungen nur für die Ordner zu erteilen, die es benötigen, z. Geben Sie www-data (oder dem Benutzer, unter dem Ihr Webserver ausgeführt wird) Schreibberechtigungen für den Upload-Ordner und geben Sie Ihrem eigenen Benutzer Schreibberechtigungen für das gesamte Verzeichnis.

mkdir dir
chown nobody:nobody dir
setfacl -m u:www-data:r-x,d:u:www-data:r-x dir
setfacl -m u:www-data:rwx,d:u:www-data:rwx dir/upload
setfacl -m u:youruser:rwx,d:u:youruser:rwx dir

Jetzt kann niemand mehr Ihre Dateien lesen, außer Ihrem Webserver und Ihrem eigenen Benutzer. Sie können in jede Datei im Ordner schreiben, und der Webserver kann nur in den Upload-Ordner schreiben.

K. Norbert
quelle