Ich bereite mich auf die Bereitstellung einer Drupal 7-Site vor und finde keine Dokumentation darüber, wie die empfohlenen sicherheitsbewussten Datei- und Verzeichnisberechtigungen festgelegt werden sollten.
Insbesondere default/files/
(auch Unterverzeichnisse?) Und alles andere settings.php
, .htaccess
was ich beachten sollte.
Antworten:
Ihr Webserver sollte in der Lage sein, alle Dateien zu lesen, aber nicht in sie zu schreiben. Wenn Ihre Site das Hochladen von Dateien umfasst, erteilen Sie dem Server die Berechtigung, nur in diesen einen Ordner zu schreiben.
Weitere Informationen zum Einrichten sowie einige Dinge, die passieren können, wenn Sie dies nicht tun, finden Sie in den Drupal-Dokumenten .
quelle
Diese Drupal- Seite ist sehr lang und verwirrend. Aber es enthält diesen Beitrag von Jason, der den Nagel auf den Kopf getroffen hat:
quelle
Meine Praxis beim Erstellen einer neuen Drupal-Site auf einem Server besteht darin, einen Benutzer zu haben, der Teil der Webserver-Gruppe (normalerweise Apache) ist und dem alle Drupal-Dateien gehören. Unter Ubuntu sind dies die Befehle, um dieses Setup zu erhalten:
Sobald ich das eingerichtet habe, melde ich mich als dieser Benutzer an und installiere Drupal unter / var / www / example / docroot oder ähnlichem. Dann erstelle ich das Dateiverzeichnis von Hand und kopiere die settings.php-Datei. Da wir uns vor dem Kopieren in Drupal als Beispielbenutzer anmelden, sollten unser Dateibesitz und unsere Berechtigungen für alle wichtigen Drupal-Dateien und -Skripten (einschließlich .htaccess-Dateien) automatisch ordnungsgemäß konfiguriert werden.
Nun richten wir das Dateiverzeichnis ein.
Als Nächstes richten wir Berechtigungen ein, damit der Webserver immer in jede Datei in diesem Verzeichnis schreiben kann. Wir tun dies, indem wir 2775 in unserem Befehl chmod verwenden. Die 2 bedeutet, dass die Gruppen-ID für alle in diesem Verzeichnis erstellten neuen Dateien erhalten bleibt. Das bedeutet, dass www - data immer die Gruppe für alle Dateien ist, wodurch sichergestellt wird, dass sowohl der Webserver als auch der Benutzer immer Schreibberechtigungen für alle neuen Dateien haben, die in diesem Verzeichnis abgelegt werden. Die erste 7 bedeutet, dass der Eigentümer (Beispiel) beliebige Dateien hier in R (Lesen) W (Schreiben) und X (Ausführen) kann. Die zweite 7 bedeutet, dass die Gruppe (www-data) auch beliebige Dateien in diesem Verzeichnis rw und x kann. Schließlich bedeutet die 5, dass andere Benutzer R- und X-Dateien können, aber nicht schreiben.
Wenn in diesem Verzeichnis Dateien vorhanden sind, vergewissern Sie sich, dass der Webserver über Schreibrechte verfügt.
Jetzt kann Drupal installiert werden. Wenn Sie fertig sind, ist es SEHR wichtig, zu settings.php zurückzukehren und sicherzustellen, dass alle Benutzer nur Leseberechtigungen haben.
Das ist es! Diese Einstellung stellt sicher, dass Sie Situationen vermeiden, in denen entweder der Benutzer, dem das Verzeichnis gehört, oder der Webserver keine Dateien im Dateiverzeichnis schreiben / ändern / entfernen können.
quelle
Der Ordner mit den Drupal-Dateien sollte vom Webserver beschreibbar sein. Der sicherste Weg, dies zu tun, besteht darin, die Gruppe zu ändern und beschreibbar zu machen, wie folgt:
Abgesehen vom Datei-Upload-Ordner ist der sicherste chmod 644 für alle Dateien, 755 für Verzeichnisse.
Dies könnte folgendermaßen geschehen (wenn es im Drupal-Site-Ordner ausgeführt wird,
.
gilt der aktuelle Pfad):Denken Sie daran, dass Sie
chmod g+w
nach dem Ausführen des obigen Befehls eine erneute Einstellung vornehmen müssen, da dadurch das chmod für alle Dateien und Ordner zurückgesetzt wird.quelle
chgrp -R www-data sites/*/files
undchmod -R g+w sites/*/files
um die Statusseitenfehler loszuwerden.Alle Ratschläge zu "chmod blah" oder "chown X" sind bedeutungslos, ohne zu wissen: Wie lautet die Standardbenutzergruppe in den Dateien und als welche Benutzer und Gruppen wird Ihr Webserver ausgeführt?
Die Drupal-Dokumente, auf die andere verlinkt haben, sind in diesem Thema ziemlich gut, aber eine andere Ressource ist das Sicherheitsüberprüfungsmodul, mit dem Sie sicherstellen können, dass Sie alles richtig eingestellt haben.
quelle
Ich werde antworten, wenn man bedenkt, dass die Dateien auf dem Server mit FTP erstellt wurden und andere Anmeldeinformationen als auf dem Webserver verwendet wurden (normalerweise wird Apache als nobody / nobody ausgeführt). Dies bedeutet, dass der Benutzer, dem die vor dem Ausführen des Drupal-Installationsprogramms manuell erstellten Dateien gehören (einschließlich der Dateien, die aus dem Drupal-Archiv auf den Server hochgeladen wurden), nicht der Benutzer ist, mit dem der Webserver ausgeführt wurde (weder der Benutzername noch die Gruppe stimmen überein). . Dieses Szenario gilt auch für den Fall, dass diese Dateien mit SSH erstellt werden.
default/files
Verzeichnis) muss (für den Benutzer, der den Webserverprozessen zugeordnet ist, der Benutzer, der dann den auf diesem Webserver ausgeführten PHP-Skripten zugeordnet ist) sein:default/files/<directory-used-by-the-module>/<sub-directory-used-by-the-module>
)quelle
Empfohlene Datei- / Verzeichnisberechtigungen:
Empfohlener Datei- / Verzeichnisbesitz:
Hier sind die Variablen, die die Standard-Verzeichnis- / Dateiberechtigungen für neue Elemente steuern:
Hier ist ein Skript zum Korrigieren von Berechtigungen: fix-permissions.sh
Weiterlesen:
Hier ist ein Skript, mit dem ich die Berechtigungen auf dem Remote-Host für öffentliche / private Verzeichnisse korrigiere:
Hinweis: Mit dem obigen Code wird versucht, die Apache-Gruppe abzurufen und auf
GET_HTTP_GROUP
variabel zu setzen.quelle
Dieses Shell-Skript befindet sich am Ende dieser Seite: https://www.drupal.org/node/244924
Ich führe es gelegentlich aus, um sicherzustellen, dass meine Berechtigungen korrekt eingerichtet sind.
quelle
Auch wenn Sie fastcgi ausführen, wird PHP als Benutzer ausgeführt und hat Zugriff auf alle Dateien, auf die der Benutzer Zugriff hat, sofern Sie nicht absichtlich versuchen, dies zu vermeiden.
quelle
Dies hat mir bei meinen OSX-Berechtigungsproblemen geholfen. Ich fand es in https://www.drupal.org/node/244924#comment-3741738 von Protoplasma-Benutzer. Ich war wie er, der Probleme nach einer Migration hatte.
quelle
Es gibt ein Modul namens Sicherheitsüberprüfung, das überprüft, ob Ihre Site sicher ist oder nicht. Ich habe auch einen sehr guten Link zum Festlegen von Site-Berechtigungen gefunden.
quelle