Aktualisierte Zusammenfassung
Das / var / www-Verzeichnis ist Eigentum von, root:root
was bedeutet, dass niemand es verwenden kann und es völlig nutzlos ist. Da wir alle einen Webserver wollen, der tatsächlich funktioniert (und sich niemand als "root" anmelden sollte), müssen wir dies beheben.
Nur zwei Entitäten benötigen Zugriff.
PHP / Perl / Ruby / Python benötigen alle Zugriff auf die Ordner und Dateien, da sie viele von ihnen erstellen (dh
/uploads/
). Diese Skriptsprachen sollten unter Nginx oder Apache (oder sogar unter FastCGI für PHP) ausgeführt werden.Die Entwickler
Wie bekommen sie Zugang? Ich weiß, dass jemand das schon einmal gemacht hat. Bei so vielen Milliarden von Websites würde man meinen, dass es mehr Informationen zu diesem Thema geben würde.
Ich weiß, dass 777 eine vollständige Lese- / Schreib- / Ausführungsberechtigung für Eigentümer / Gruppe / Andere hat. Das scheint also nicht richtig zu sein , da es zufälligen Benutzern volle Berechtigungen gibt.
Welche Berechtigungen müssen verwendet /var/www
werden, damit:
- Quellcodeverwaltung wie Git oder Svn
- Benutzer in einer Gruppe wie "Websites" ( oder sogar zu "WWW-Daten" hinzugefügt )
- Server wie Apache oder Lighthttpd
- Und PHP / Perl / Ruby
Können alle dort Dateien (und Verzeichnisse) lesen, erstellen und ausführen?
Wenn ich richtig liege, werden Ruby- und PHP-Skripte nicht direkt "ausgeführt", sondern an einen Interpreter übergeben. Es ist also nicht erforderlich, Berechtigungen für Dateien in /var/www
... auszuführen . Es scheint also die richtige Erlaubnis zu sein, chmod -R 1660
die das machen würde
- Alle Dateien, die von diesen vier Entitäten gemeinsam genutzt werden können
- Alle Dateien sind versehentlich nicht ausführbar
- Blockieren Sie alle anderen Personen vollständig aus dem Verzeichnis
- Setzen Sie den Berechtigungsmodus für alle zukünftigen Dateien auf "sticky"
Ist das richtig?
Update 1: Ich habe gerade festgestellt, dass für Dateien und Verzeichnisse möglicherweise unterschiedliche Berechtigungen erforderlich sind. Ich habe oben über Dateien gesprochen, daher bin ich mir nicht sicher, welche Verzeichnisberechtigungen erforderlich sind.
Update 2: Die Ordnerstruktur /var/www
verändert sich drastisch, da eine der vier oben genannten Entitäten immer Ordner und Unterordner mit einer Tiefe von mehreren Ebenen hinzufügt (und manchmal entfernt). Sie erstellen und entfernen auch Dateien, auf die die anderen 3 Entitäten möglicherweise Lese- / Schreibzugriff benötigen. Daher müssen die Berechtigungen die vier oben genannten Schritte für Dateien und Verzeichnisse ausführen. Da keiner von ihnen eine Ausführungserlaubnis benötigen sollte (siehe Frage zu Ruby / PHP oben), würde ich davon ausgehen, dass die rw-rw-r--
Erlaubnis alles ist, was benötigt wird und absolut sicher ist, da diese vier Entitäten von vertrauenswürdigem Personal (siehe Nr. 2) und allen anderen Benutzern ausgeführt werden Das System hat nur Lesezugriff.
Update 3: Dies ist für persönliche Entwicklungsmaschinen und private Unternehmensserver. Keine zufälligen "Web-Kunden" wie ein gemeinsamer Host.
Update 4: In diesem Artikel von slicehost wird anscheinend am besten erklärt, was zum Einrichten von Berechtigungen für Ihren WWW-Ordner erforderlich ist. Ich bin mir jedoch nicht sicher, welcher Benutzer oder welche Gruppe Apache / Nginx mit PHP oder Svn / Git ausführt und wie ich sie ändern soll.
Update 5: Ich habe (glaube ich) endlich einen Weg gefunden, dies alles zum Laufen zu bringen (Antwort unten). Ich weiß jedoch nicht, ob dies der richtige und SICHERE Weg ist, dies zu tun. Deshalb habe ich ein Kopfgeld angefangen. Die Person mit der besten Methode zum Sichern und Verwalten des WWW-Verzeichnisses gewinnt.