WordPress Berechtigungen richtig setzenAn und für sich ist die Installation von WordPress schnell gemacht. Wenn der Hoster nicht direkt eine One-Click-Installation bietet, dann hilft das WordPress-eigene Installationsscript durch die Grundkonfiguration. Eine Sache bleibt hierbei jedoch meist auf der Strecke: Die Datei- und Ordnerrechte. Wenn diese falsch gesetzt sind, kann es zu vielerlei Problemen kommen.

Sind die Berechtigungen zu restriktiv gesetzt, lassen sich weder Updates noch Plugins installieren oder der Dateiupload streikt. Sind sie zu „locker“ gesetzt, bieten sie eine hervorragende Einladung für Hacker und potentielle Angreifer. Deshalb möchte ich nachfolgend meine „WordPress Berechtigungsstrategie“ offenbaren, mit der ich bisher sehr gut gefahren bin. Dabei zeige ich euch einmal, wie man die WordPress-Berechtigungen in der Shell setzen kann und einmal wie man die WordPress-Berechtigungen per FTP setzt.

WordPress-Berechtigungen per Shell setzen

Wenn ihr Shell-Zugriff auf euren Server habt, dann führt folgende vier Befehle in der Shell aus.

In der ersten Zeile müsst ihr das „/var/www/mein-wordpress“ durch den Pfad eurer WordPress-Installation ersetzen. In der zweiten Zeile müsst ihr ggf. das „www-data“ durch den User ersetzen, in dessen Kontext euer Webserver/PHP läuft.

WordPress-Berechtigungen per FTP setzen

Wenn ihr keinen Shell-Zugriff auf euren Server habt (z.B. wenn ihr euren Webspace bei einem Sharehoster angemietet habt), dann könnt ihr die Berechtigungen auch per FTP-Programm setzen. Da jedes FTP-Programm eine etwas andere Oberfläche hat, beschreibe ich die Schritte nur allgemein. Solltet ihr Probleme bei der Übertragung meiner allgemeinen Anweisungen auf eurer spezielles FTP-Programm haben, hinterlasst mir einen Kommentar.

  1. Loggt euch per FTP auf eurem Webspace ein
  2. Wechselt in das WordPress-Verzeichnis
  3. Ändert den Besitzer (falls möglich) aller Dateien und Ordner auf „www-data“ bzw. den User, in dessen Kontext euer Webserver läuft.
  4. Setzt die Ordnerberechtigungen (CHMOD) für alle Ordner inkl. Unterordner (d.h. rekursiv) auf 755.
  5. Setzt die Dateiberechtigungen für alle Dateien inkl. den Dateien in Unterordnern auf 644.

Anzahl der WordPress Revisionen begrenzenSeit einiger Zeit beherrscht WordPress die Versionierung beim Verfassen von Artikeln und Seiten. WordPress speichert hierbei automatisch immer wieder den aktuellen Stand eines Artikels (die sogenannte Revision), sodass bei Absturz des Browsers, spontaner Akkuschwäche des Notebooks oder ausversehen gelöschten Inhalten jederzeit eine vorhergegangene Revision geladen werden kann.

Im Normalfall speichert WordPress jedoch unendlich viele Revisionen, was, je nach Größe des Blogs, Serverleistung und Anzahl der Artikel, zu einem unnötigen Overhead führen kann.

Mittels folgendem Snippet lässt sich die Zahl der gespeicherten Revisionen pro Artikel einschränken.

Oben stehendes Snippet bewirkt, dass nur noch die jeweils 10 neuesten Revisionen eines Artikels gespeichert werden. (Sofern kein anderer Wert in der wp-config.php hinterlegt wurde.) Ältere Versionen werden gelöscht. Mir persönlich reichen 10 Revisionen vollkommen aus, wer lieber auf Nummer sicher geht, kann auch einen höheren Wert wählen, wobei der positive Effekt des obigen Codes dann immer kleiner werden dürfte.

WordPress Kommentare im Frontend bearbeitenSo sehr ich mich über jeden einzelnen Kommentar in meinen Blogs freue, so sehr hasse ich Spam und Hater-Kommentare. Um diese zu löschen führt, in den meisten Fällen kein Weg am WordPress-Backend vorbei.

Mit folgendem Snippet lassen sich im Frontend (direkt auf dem Blog) für jeden Kommentar ein „Löschen““- und ein „Als Spam markieren“-Link anzeigen. Somit können unpassende Kommentare direkt beim Lesen entfernt werden, ohne in den Kommentar-Editier-Modus oder das WordPress-Dashboard zu wechseln.

Das Snippet ist so gestaltet, dass die beiden Links nur angezeigt werden, wenn ein Nutzer mit ausreichenden Berechtigungen angemeldet ist.

Nun muss die Funktion nur noch an geeigneter Stelle im Theme aufgerufen werden. (Vorzugsweise im Comment-Loop.) Als Parameter muss die ID des jeweiligen Kommentars übergeben werden.

WordPress Version nicht ausgebenStandardmäßig gibt WordPress die eigene Versionsnummer im HTML-Code einer Webseite aus. Dies bringt jedoch mehr Gefahr als nutzen mit sich. So können potenzielle Angreifer nach Bekanntwerden einer Sicherheitslücke in einer bestimmten WordPress-Version gezielt nach Blogs suchen, die mit dieser WordPress-Version betrieben werden.

Aus diesem Grund sollte, sofern kein anderer, triftiger Grund dagegen spricht, die Ausgabe der WordPress-Versionsnummer unterbunden werden. Dies kann durch hinzufügen des folgenden Snippets in der functions.php erreicht werden.

Das Snippet klinkt sich per Filter in die Ausgabe des Versionsstrings ein und ersetzt diesen durch einen leeren String, sodass die Ausgabe der WordPress Version unterdrückt wird.

RSS-Feed später ausgebenMit folgendem Snippet lassen sich Inhalte des Blogs im RSS-Feed später ausgeben. Später meint hierbei, dass ein Artikel, der um 13:30 auf dem Blog veröffentlicht wurde, zum Beispiel erst um 14:30 im Feed erscheint.

Dies mag auf den ersten Blick komisch anmuten, macht aber in diversen Szenarien Sinn. Zum Beispiel ist es denkbar, die Artikel erst mit 20 Minuten Verzögerung im Feed anzuzeigen, da man in den ersten Minuten meist noch 1-2 Fehler bemerkt und behebt, die bei sofortiger Veröffentlichung schon bereits im Feed ausgeliefert worden wären.

Ein zweites Szenario wäre zum Beispiel die Artikel erst einen Tag oder sogar eine Woche später im Feed anzuzeigen. So bekommen Feed-Leser zwar auch alle Inhalte, die Motivation direkt auf den Blog zu gehen (und somit mehr Kommentare abzugeben, etc.) steigt jedoch.

Das Snippet klinkt sich in die Erstellung der Datenbankabfrage zur Ermittlung der Feed-Inhalte ein und erweitert die Abfrage um eine weitere where-Klausel, die auf das Alter der Artikel/Inhalte (=Erstellungszeitpunkt der Artikel) eingeht.