Articles

WordPress Permissions – How To Set Up Proper Filesystems And Ownerships

  • 12 min read
  • WordPress,Server,Sicherheit,Techniken (WP)
  • Speichern zum Offline-Lesen
  • Share on Twitter, LinkedIn
Wenn Menschen über WordPress-Sicherheit sprechen, sind Dateiberechtigungen und -eigentum meist das Letzte, woran sie denken. Die Installation von Sicherheits-Plugins ist eine gute Praxis und ein Muss für jede WordPress-Website. Wenn Ihre Dateisystemberechtigungen jedoch nicht korrekt eingerichtet sind, können die meisten Ihrer Sicherheitsmaßnahmen leicht von Eindringlingen umgangen werden.

Wenn Menschen über WordPress-Sicherheit sprechen, sind Dateiberechtigungen und -eigentum normalerweise das Letzte, woran sie denken. Die Installation von Sicherheits-Plugins ist eine gute Praxis und ein Muss für jede WordPress-Website. Wenn Ihre Dateisystemberechtigungen jedoch nicht korrekt eingerichtet sind, können die meisten Ihrer Sicherheitsmaßnahmen leicht von Eindringlingen umgangen werden.

wordpress permissions

Berechtigungen und Besitzverhältnisse sind bei WordPress-Installationen sehr wichtig. Die korrekte Einrichtung dieser Rechte auf Ihrem Webserver sollte das erste sein, was Sie nach der Installation von WordPress tun. Falsche Berechtigungen können zu fatalen Fehlern führen, die Ihre Website zum Erliegen bringen. Falsche Berechtigungen können auch Ihre Website gefährden und sie anfällig für Angriffe machen.

Weitere Lektüre auf SmashingMag:

  • Was Sie tun sollten, wenn Ihre Website nicht mehr funktioniert
  • Wie Sie Ihren Coding-Workflow organisieren
  • Wie Sie herausfinden können, warum Ihre Website nicht mehr funktioniert
  • 9 Schritte zu einer glücklichen Beziehung mit Ihrem Hosting-Anbieter

Abgesehen von den Sicherheitsbedenken können auch eine Reihe anderer Probleme durch falsche Berechtigungen und Eigentumsverhältnisse entstehen. Ist Ihnen schon einmal ein leerer weißer Bildschirm aufgefallen, wenn Sie versucht haben, Ihre Website zum ersten Mal zu laden? Oder haben Sie jemals Fehlermeldungen erhalten, wenn Sie versucht haben, Bilder in den Medien-Uploader hochzuladen? Die Korrektur der Rechte und des Eigentums an Ihren Dateien und Ordnern behebt diese Probleme häufig.

In diesem Artikel erfahren Sie alles über die Rechte und das Eigentum am WordPress-Dateisystem: was sie sind, warum sie wichtig sind und wie man sie einrichtet. Sie werden einige grundlegende Prinzipien kennenlernen, die ich befolge, um mein Dateisystem intakt zu halten. Wir werden auch die beiden gängigsten WordPress-Serverkonfigurationen behandeln. Wir werden erklären, wie sie sich unterscheiden und, was noch wichtiger ist, wie man die richtigen Berechtigungen und Eigentumsrechte für jede Konfiguration festlegt.

Terminal Vs. FTP-Client

Im Laufe dieses Artikels werden wir das Terminal verwenden, um Berechtigungen und Besitzverhältnisse zu ändern. Warum nicht stattdessen einen FTP-Client verwenden? Der Grund ist, dass FTP für unsere Bedürfnisse etwas eingeschränkt ist. FTP kann zum Übertragen von Dateien und zum Ändern von Datei- und Ordnerberechtigungen verwendet werden, aber nicht zum Ändern der Eigentumsverhältnisse.

Um die in diesem Artikel aufgeführten Befehle auszuführen, müssen Sie mit dem Befehl SSH bei Ihrem Server angemeldet sein. Wenn Sie mit dem Terminal und dem Befehl SSH nicht vertraut sind, können Sie sich im Artikel „Einführung in die Linux-Befehle“ darüber informieren.

Benutzer und Gruppen

Zuvor müssen wir kurz darüber sprechen, was Benutzer und Gruppen sind, da diese bei der Definition von Berechtigungen Hand in Hand gehen.

Ein Benutzer ist, einfach ausgedrückt, ein Konto, das Zugriff auf den Computer hat, und eine Gruppe ist einfach eine Kennung für eine bestimmte Gruppe von Benutzern. Das bedeutet, dass Sie jedes Mal, wenn Sie Dateien per FTP übertragen, ein Benutzerkonto auf Ihrem Server verwenden. Und je nachdem, wie Ihr Host Ihr Konto eingerichtet hat, gehören Sie (der Benutzer) vielleicht zu einer oder mehreren Gruppen. Benutzer und Gruppen sind wie Benutzer und Rollen in WordPress. Beide sind vom Konzept her gleich, nur dass ersteres auf Ihrem Server verwendet wird.

Benutzer und Gruppen sind wichtig, weil sie helfen, die Rechte für alle unsere Dateien und Ordner zu identifizieren. Der Besitzer einer Datei hat normalerweise volle Rechte, andere Benutzer, die zur gleichen Gruppe gehören, haben weniger Rechte, und alle anderen haben keine Rechte. Diese Privilegien werden als Berechtigungen bezeichnet.

Was sind Dateiberechtigungen?

Berechtigungen legen fest, was Benutzer mit einer Datei tun können. Eine Berechtigung wird durch eine Reihe von Zahlen dargestellt, z. B. 644 oder 777, die als Berechtigungsmodus bezeichnet werden. Wenn Sie schon einmal Plugins in WordPress verwendet haben, wurden Sie höchstwahrscheinlich von einigen von ihnen aufgefordert, die Berechtigungen einer Datei oder eines Verzeichnisses zu ändern, weil das Plugin nicht darauf schreiben kann. Indem Sie die Dateiberechtigungen ändern, erlauben Sie dem Webserver den Zugriff auf diese Datei oder diesen Ordner.

Stellen Sie sich einen Berechtigungsmodus als eine Reihe von „Wer darf was tun“-Anweisungen vor, bei denen jede Ziffer dem „Wer“-Teil der Anweisung entspricht:

  • Erste Ziffer. Was der Benutzer des Kontos, dem die Datei gehört, tun kann
  • Zweite Ziffer. Was andere Benutzerkonten in der Gruppe des Besitzers tun können
  • Dritte Ziffer. Was die Benutzerkonten aller anderen (einschließlich der Website-Besucher) tun können

Die nächste Ziffer entspricht dem „Was“-Teil der Aussage und ist die Summe einer Kombination dieser Ziffern:

  • 4 Eine Datei lesen oder die Namen der Dateien in einem Ordner lesen
  • 2 Eine Datei schreiben oder ändern oder den Inhalt eines Ordners ändern
  • 1 Eine Datei ausführen oder auf die Dateien in einem Ordner zugreifen

Diese Ziffern sind die Berechtigungen, die dem „Wer“ im Berechtigungsmodus zugewiesen werden. Beachten Sie in der obigen Liste, dass Privilegien für Dateien und Ordner etwas anderes bedeuten.

Die Verwendung des richtigen Berechtigungsmodus ist sehr wichtig. Um dies zu verdeutlichen, denken Sie noch einmal an Benutzer und Rollen in WordPress. Auf einer WordPress-Website haben Mitwirkende und Administratoren unterschiedliche Möglichkeiten. Mitwirkende können neue Blogeinträge erstellen, aber sie können keine Plugins hinzufügen. Administratoren hingegen können Plugins hinzufügen und auch Blogeinträge erstellen. Administratoren können sogar das Aussehen der Website ändern, wenn sie das möchten. Eine klare Linie trennt, was Benutzer in verschiedenen Rollen tun können. Mit den Berechtigungsmodi verhält es sich genauso, nur dass es hier nicht um Blogeinträge und Themenoptionen geht, sondern um Dateien und Ordner auf dem Server.

Berechtigungsmodi ändern

FTP-Clients bieten in der Regel eine Schnittstelle, über die Sie den Berechtigungsmodus Ihrer Dateien und Ordner bequem ändern können. Hier ist ein Screenshot der Schnittstelle meines FTP-Clients:

Example of a permission mode interface.
Beispiel einer Schnittstelle für den Berechtigungsmodus.

Wenn Sie Zugriff auf das Terminal Ihres Servers haben, können Sie auch den Befehl chmod verwenden, um den Berechtigungsmodus einer Datei oder eines Ordners zu ändern:

sudo chmod 644 <file>

Um die Berechtigungsmodi aller Dateien oder Ordner zu ändern, verwenden Sie chmod in Verbindung mit dem Befehl find. So können Sie beispielsweise alle Dateien in 644:

sudo find . -type f -exec chmod 644 {} +

ändern oder alle Ordner in 755:

sudo find . -type d -exec chmod 755 {} +

Eine Anleitung zum Ändern der Berechtigungsmodi finden Sie unter „Ändern von Dateiberechtigungen im WordPress-Codex“.

Der Unterschied zwischen 644 und 777

Schauen wir uns einige Berechtigungsmodi an und wie sie sich auf unsere Website auswirken.

Was würde ein PHP-Skript mit einem Berechtigungsmodus von 644 bedeuten? Nach der obigen Erklärung, wie Berechtigungsmodi funktionieren, können wir entschlüsseln, was dieser Modus den Benutzern unseres Skripts erlaubt:

  • Die Rechte des Eigentümers sind „Lesen“ (4) + „Schreiben“ (2) = 6
  • Die Rechte der Gruppe des Eigentümers sind „Lesen“ (4) = 4
  • Die Rechte aller anderen sind „Lesen“ (4) = 4

Im Klartext bedeutet das, dass:

  • wenn wir das Skript besitzen, dürfen wir es lesen und verändern;
  • alle anderen dürfen es nur lesen.

Wie wir sehen, ist 644 ein guter Berechtigungsmodus für unser PHP-Skript. Wir können Änderungen daran vornehmen, und unser Webserver kann es lesen.

Werfen wir nun einen Blick auf Verzeichnisse. Was wäre, wenn wir einen Ordner besäßen, der den Berechtigungsmodus 777 hätte? Dieser Berechtigungsmodus lässt sich wie folgt aufschlüsseln:

  • Die Rechte des Besitzers sind „Lesen“ (4) + „Schreiben“ (2) + „Ausführen“ (1) = 7
  • Die Rechte der Gruppe des Besitzers sind „Lesen“ (4) + „Schreiben“ (2) + „Ausführen“ (1) = 7
  • Die Rechte aller anderen sind „Lesen“ (4) + „Schreiben“ (2) + „Ausführen“ (1) = 7

Das bedeutet, dass

  • jeder eine Liste der Dateinamen in unserem Ordner erhalten kann;
  • jemand jede Datei in unserem Ordner erstellen, ändern und löschen kann;
  • jemand auf die Dateien in unserem Ordner zugreifen kann.

Es ist offensichtlich, dass 777 ein schlechter Berechtigungsmodus für alles auf unserer WordPress-Website ist, da jeder Besucher in der Lage wäre, Dateien zu unserem Verzeichnis hinzuzufügen oder sogar Skripte zu löschen. Schlimmer noch, jeder wäre in der Lage, bösartigen Code einzuschleusen und unsere Website zu kompromittieren.

WordPress-Server-Konfigurationen

Nun wissen wir über Berechtigungen Bescheid und wie man sie ausliest. Aber bevor wir fortfahren, alle unsere Berechtigungen zu ändern, müssen wir verstehen, wie unser Server eingerichtet ist. Da es bei den Berechtigungen um Benutzerkonten und Gruppen geht, müssen wir wissen, wie unsere WordPress-Website läuft.

Es gibt viele verschiedene Serverkonfigurationen. Verschiedene Konfigurationen benötigen verschiedene Berechtigungsmodi, damit WordPress korrekt und sicher funktioniert. Wir werden nur über die zwei häufigsten Konfigurationen und die richtigen Berechtigungen für sie sprechen:

  • Standardserverkonfiguration:
    • Sie haben ein Benutzerkonto.
    • Ihr Webserver läuft unter einem anderen Benutzerkonto.
  • Gemeinsame Serverkonfiguration oder suEXEC Konfiguration:
    • Sie haben ein Benutzerkonto.
    • Andere Personen, die den Server verwenden, haben Benutzerkonten und teilen möglicherweise dieselbe Gruppe wie Ihr Benutzerkonto.
    • Ihr Webserver wird als Eigentümer Ihrer WordPress-Dateien ausgeführt.

Der Hauptunterschied zwischen diesen beiden besteht darin, wie der Webserver ausgeführt wird.

Berechtigungen für eine Standard-WordPress-Serverkonfiguration

Standard-WordPress-Konfigurationen erfordern etwas mehr Arbeit als gemeinsam genutzte Serverkonfigurationen, da der Webserver keine Beziehung zu unserem Benutzerkonto hat.

Datei- und Ordnereigentum für WordPress

Zunächst müssen wir die Datei- und Ordnereigentümerschaft für unsere WordPress-Dateien anpassen. Wir müssen Folgendes sicherstellen:

  • dass Ihr Benutzerkonto der Eigentümer aller WordPress-Dateien und -Ordner ist,
  • dass Ihr Benutzerkonto und das Benutzerkonto des Webservers zur selben Gruppe gehören.

Um herauszufinden, zu welchen Gruppen Ihr Benutzerkonto gehört, können Sie diesen Befehl im Terminal Ihres Servers verwenden:

groups

Um dann herauszufinden, zu welchen Gruppen Ihr Webserver gehört, können Sie diesen PHP-Schnipsel vorübergehend in eines Ihrer WordPress-Skripte einfügen:

echo exec( 'groups' );

Wenn Ihr Benutzer und der Webserver nicht der gleichen Gruppe angehören, können Sie den folgenden Befehl im Terminal verwenden, um Ihren Benutzer zu einer der Gruppen Ihres Webservers hinzuzufügen:

sudo usermod -a -G <a-common-group-name> myuser

Um sicherzustellen, dass alles in unserem WordPress-Ordner zu unserem Benutzerkonto gehört und die soeben hinzugefügte gemeinsame Gruppe hat, führen Sie diesen Befehl in Ihrem WordPress-Ordner aus:

sudo find . -exec chown myuser:a-common-group-name {} +

Berechtigungen für WordPress

Alle unsere Dateien und Ordner sollten nun die richtigen Eigentumsrechte haben. Nun ist es an der Zeit, die Berechtigungsmodi anzupassen. Der Einfachheit halber müssen Sie sich nur Folgendes merken:

  • Alle Dateien sollten 664.
  • Alle Ordner sollten 775.
  • wp-config.php sollten 660.

Das ist es, was wir mit diesem Satz von Berechtigungsmodi erreichen wollen:

  • Unser Benutzerkonto darf unsere Dateien lesen und ändern.
  • WordPress (über unseren Webserver) darf unsere Skripte lesen und modifizieren.
  • WordPress darf Dateien und Ordner erstellen, modifizieren oder löschen.
  • Andere Personen dürfen unsere Datenbank-Zugangsdaten in wp-config.php nicht sehen.

Du denkst vielleicht, dass es nicht sicher ist, WordPress volle Rechte an unseren Ordnern zu gewähren. Keine Sorge – wir tun dies, weil WordPress bestimmte Funktionen benötigt, um Dateien zu erstellen und zu ändern. WordPress erlaubt es uns, Themes und Plugins hochzuladen und zu entfernen und sogar Skripte und Stile über das administrative Backend zu bearbeiten. Ohne diese Art von Berechtigung müssten wir Themes und Plugins jedes Mal manuell per FTP hochladen.

Sie können Ihren FTP-Client verwenden, um die Berechtigungsmodi zu ändern, oder Sie können die folgenden Befehle in Ihrem WordPress-Verzeichnis verwenden, um die Berechtigungen für alle Ihre Dateien und Ordner schnell anzupassen:

sudo find . -type f -exec chmod 664 {} +sudo find . -type d -exec chmod 775 {} +sudo chmod 660 wp-config.php

Beachten Sie, dass einige Webserver strenger sind als andere. Wenn Ihr Server streng ist, kann die Einstellung von wp-config.php auf 660 dazu führen, dass Ihre Website nicht mehr funktioniert. In diesem Fall belassen Sie es bei 664.

Berechtigungen für eine gemeinsame Serverkonfiguration oder SuEXEC-Konfiguration

Berechtigungen für gemeinsame Serverkonfigurationen sind einfacher zu implementieren. Wir werden uns nicht mit den Eigentumsverhältnissen befassen, da der Webserver als Eigentümer unserer Dateien und Ordner läuft. Da unser Benutzerkonto und der Webserver dieselben Berechtigungen haben (beide sind Eigentümer), können wir direkt mit dem Ändern der Berechtigungsmodi beginnen:

  • Alle Dateien sollten 644.
  • Alle Ordner sollten 755.
  • wp-config.php sollten 600 sein.

Ähnlich wie bei der vorherigen Gruppe von Berechtigungsmodi verteilen sich diese wie folgt:

  • Unser Benutzerkonto darf unsere Dateien lesen und ändern.
  • WordPress (über unseren Webserver und als Kontoinhaber) darf unsere Skripte lesen und ändern.
  • WordPress darf Dateien oder Ordner erstellen, ändern oder löschen.
  • Andere Personen dürfen unsere Datenbankzugangsdaten in wp-config.php nicht sehen.

Auch hier können Sie einen FTP-Client verwenden, um die Berechtigungsmodi zu ändern, oder Sie können die folgenden Befehle in Ihrem WordPress-Verzeichnis verwenden, um die Berechtigungen aller Ihrer Dateien und Ordner schnell anzupassen:

sudo find . -type f -exec chmod 644 {} +sudo find . -type d -exec chmod 755 {} +sudo chmod 600 wp-config.php

Nach der Standardkonfiguration des WordPress-Servers ist Ihr Server möglicherweise strenger als andere und erlaubt wp-config.php nicht 600. In diesem Fall können Sie es auf ein nachsichtigeres 640 einstellen; wenn das immer noch nicht funktioniert, dann verwenden Sie 644.

Befolgen Sie immer diese Richtlinien und Ihre WordPress-Dateien sollten vor Eindringlingen sicher sein.

Gängige Fallstricke

Ein häufiger Fehler, den Leute machen, ist, den Ordner uploads auf 777 zu setzen. Manche tun dies, weil sie einen Fehler erhalten, wenn sie versuchen, ein Bild auf ihre Website hochzuladen, und 777 behebt dieses Problem schnell. Aber geben Sie niemals unbegrenzten Zugriff für alle, sonst machen Sie den Webserver angreifbar. Wenn Sie die in diesem Artikel behandelten Richtlinien befolgen, sollten Sie keine Probleme beim Hochladen von Dateien auf Ihre Website haben.

Es kann jedoch vorkommen, dass ein Plugin verlangt, dass Sie eine Datei auf 777 setzen. In diesen Fällen können Sie die Datei vorübergehend auf 777 setzen, aber stellen Sie sicher, dass Sie sie wieder auf den ursprünglichen Berechtigungsmodus zurücksetzen, wenn Sie fertig sind.

Abschluss

Wir haben jetzt etwas über die richtigen Berechtigungen und den Besitz von Dateien auf einer WordPress-Website gelernt. Wir haben auch gelernt, den Berechtigungsmodus 777 zu vermeiden, weil er den Webserver gefährdet.