Per FTP-Zugang: WordPress Permissions manuell reparieren
Wir nehmen den Weg über einen FTP-Client. Hier sollten die Zugriffsrechte für WordPress wie folgt gesetzt werden:
Exkurs:
WP Rocket requires a standard setup according to WordPress rules for files/folders permission. Make sure
- files are set to 640 or 644, (außer wp-content)
- and folders are set to 750 or 755 (außer wp-content)
- wp-config.php – 600
- .htaccess – 644, or 600
- ZUM SCHLUSS: files in wp-content 664; wp-content folders (rekursiv) 775
Andere Meinungen:
- /wp-admin/ – Rekursiv 755 (Unterverzeichnisse einbeziehen)
- /wp-admin/index.php – 644
- /wp-includes/ – Rekursiv 755 (Unterverzeichnisse einbeziehen)
- /wp-content/ – Rekursiv 777 (Unterverzeichnisse einbeziehen)
Community:
https://gist.github.com/Adirael/3383404 >>>
Den Code kann man einfach in einem permission.sh im Root Folder der Instanz ablegen und mit ./permission.sh ausführen. Dazu das Plug-in WPTerm (Autor: Jerome Bruandet) verwenden.
#!/bin/bash
#
# This script configures WordPress file permissions based on recommendations
# from http://codex.wordpress.org/Hardening_WordPress#File_permissions
#
# Author: Michael Conigliaro <mike [at] conigliaro [dot] org>
#
WP_OWNER=www-data # <-- wordpress owner
WP_GROUP=www-data # <-- wordpress group
WP_ROOT=$1 # <-- wordpress root directory
WS_GROUP=www-data # <-- webserver group
# reset to safe defaults
find ${WP_ROOT} -exec chown ${WP_OWNER}:${WP_GROUP} {} \;
find ${WP_ROOT} -type d -exec chmod 755 {} \;
find ${WP_ROOT} -type f -exec chmod 644 {} \;
# allow wordpress to manage wp-config.php (but prevent world access)
chgrp ${WS_GROUP} ${WP_ROOT}/wp-config.php
chmod 660 ${WP_ROOT}/wp-config.php
# allow wordpress to manage wp-content
find ${WP_ROOT}/wp-content -exec chgrp ${WS_GROUP} {} \;
find ${WP_ROOT}/wp-content -type d -exec chmod 775 {} \;
find ${WP_ROOT}/wp-content -type f -exec chmod 664 {} \;
Alle Dateien und Ordner zuerst rekursiv auf 644.
Danach alle Ordner und Unterordner (ohne die Dateien darin) auf 755, mit Ausnahme /wp-content, was später behandelt wird.
/wp-config.php auf 660.
/wp-content zuerst rekursiv auf 664.
Dann alle Dateien in /wp-content und in dessen Unterordnern auf 775. Die Ordner und Unterordner selbst in /wp-content bleiben auf 664.
“Rekursiv” bedeutet “für den Ordner selbst und allen darin enthaltenen Objekte wie Dateien und Unterordner”. D.h. der gesamte Verzeichnisbaum, bis zum letzten Unterordner.
Bei diversen Webspace Providern kann es Unterschiede geben – hier hilft oftmals nur Probieren. Die Abweichungen von den o.g. Settings sollten sich jedoch in Grenzen halten.
Erklärung für die Unix-Rechteverwaltung
In Unix werden diese Rechte mithilfe von 3 Werten ausgedrückt. Der erste Wert steht für die Rechte des Eigentümers, der zweite Wert steht für die Rechte der Gruppe und der dritte Wert steht für die Rechte aller übrigen Nutzer. Die Werte haben folgende Bedeutung:
Wert Symbol Bedeutung
0 – – – darf nichts
1 – – x darf ausführen (‚execute‘)
2 – w – darf schreiben (‚write‘)
3 – w x darf schreiben und ausführen
4 r – – darf lesen (‚read‘)
5 r – x darf lesen und ausführen
6 r w – darf lesen und schreiben
7 r w x darf lesen, schreiben und ausführen
Ausführungsrechte zu haben bedeutet, Zugriff auf die Inhalte des Ordners zu haben. Mit Leserechten können Sie sich den Inhalt eines Ordners anschauen und mit den Schreibrechten können Sie Dateien zufügen oder aus dem Ordner entfernen. Der Unterschied zwischen ausführen und lesen ist, dass Sie ohne die Leserechte selbst wissen müssen, wie die Dateien heißen, ein ‚directory listing‘ wäre nicht möglich.
Die Ausführungsrechte sind für PHP-Scripts eher uninteressant, für Perl-Scripts jedoch sehr. Ein PHP-Script ist schon ausführbar, wenn Apache die Leserechte für die Datei besitzt. Alle PHP-Scripts funktionieren für die Benutzer/Gruppe. Weiterhin sind die Zugriffsrechte für Dateien belanglos.
Passende Zugriffsrechte auswählen
In DirectAdmin können Sie sehen, welche Nutzer und welche Gruppe an einen bestimmten Ordner oder an eine bestimmte Datei gekoppelt sind. Es gibt drei verschiedene Nutzer und Gruppen, denen Sie Rechte zuteilen können: Ihrem Usernamen selbst, ‚Apache‘ und ‚Mail‘. Beachten Sie, dass wenn Sie Rechte an einen erteilen, diese nicht automatisch auch für den anderen gelten; jeder muss daher einzeln seine Rechte zugeteilt bekommen, sie sind nicht übertragbar.
Standardmäßig erhalten die Dateien, die Sie uploaden, den CHMOD-Status 644 und Ordner den CHMOD-Status 755. Der Eigentümer wird dann unter dem Username laufen und die Gruppe unter ‚Apache‘. Das sollte für die meisten Anpassungen ausreichend sein. Wollen Sie mit PHP auf einen bestimmten Ordner zugreifen, stellen Sie die Rechte auf den CHMOD-Status 775. Für die Bearbeitung einer Datei ist der CHMOD-Status 664 ausreichend.
Wenn ‚Apache‘ nicht mehr in der Gruppe steht, weil entweder Nutzer oder Gruppe geändert wurden (z.B. weil Sie einen ‚Ownership Reset‘ durchgeführt haben), dann müssen Sie den Status für Dateien auf 666 setzen und den Status für Ordner auf 777 setzen; weil ‚Apache‘ sonst kein Eigentümer mehr ist und in die Gruppe ‚alle übrigen Nutzer‘ wechselt. Dadurch entsteht aber kein Sicherheitsrisiko, da die Ordner und Dateien schon auf einem höheren Level für andere Nutzer unzugänglich gemacht wurden, d.h. dass nur Sie Zugang zu Ihren Dateien haben.
Häufig genutzte CHMOD-Status für Dateien:
Code Bedeutung
644 Schreib- und Leserechte für den Eigentümer, nur Leserechte für alle Übrigen
664 Schreib- und Leserechte für den Eigentümer und die Gruppe, nur Leserechte für alle Übrigen
666 Jeder hat Schreib- und Leserechte
CHMOD-Status für Ordner:
Code Bedeutung
755 Alle drei Gruppen haben Lese- und Ausführungsrechte; der Eigentümer hat zusätzlich Schreibrechte
775 Alle drei Gruppen haben Lese- und Ausführungsrechte; der Eigentümer und die Gruppe haben zusätzlich die Schreibrechte
777 Alle drei Gruppen haben Lese-, Schreib- und Ausführungsrechte
Sicherheitsrisiko: 777 ist nicht unsicher
Obwohl oben geschrieben steht, dass der letzte Wert für den Rest der Welt bzw. alle übrigen Nutzer steht, hält sich das Sicherheitsrisiko in Grenzen. Die passende Auswahl bei der Vergabe von Zugriffsrechten zu treffen ist zwar wichtig, aber nicht von höchster Priorität. Da der Zugriff auf einem höheren Level auf dem Server anderen Nutzern verweigert wird, ist es dadurch anderen Nutzern nicht möglich Ihre Dateien zu ändern oder mit ihnen zu arbeiten. Darüber hinaus kann ein Visitor Ihrer Website im Allgemeinen keine Daten in Ihrem Hosting-Account anpassen oder ändern.
Sie sollten aber vor allem bei Upload-Scripts aufpassen. Diese bieten Visitors die Möglichkeit Dateien auf Ihre Website zu uploaden, wodurch diese zu einem ‚Leck‘ werden. Wenn Sie diese aber gut abfangen, und z.B. verhindern, dass Visitors in den ‚../‘-Ordner (das ist der übergeordnete Ordner) uploaden können, dann hält sich auch hier das Sicherheitsrisiko in Grenzen. Die meisten Software-Pakete bieten in diesen Fällen aber ausreichend Sicherheit. Die Sicherheitsrisikos sind beim Upload von Dateien übrigens übertragbar, weil Sie hier praktisch Dritten erlauben, Dateien in Ihrem Account anzupassen.
Sie sollten einem Ordner also folglich nicht mehr Rechte als nötig geben. Wenn ein Ordner nicht für Uploads verwendet werden soll oder durch ein Script (z.B. Caches) angepasst werden soll, sollten Sie ihm nicht den CHMOD-Status ‚777‘ erteilen.
Alles in allem ist es bei Antagonist kein Sicherheitsrisiko den CHMOD-Status ‚777‘ zu verwenden, besonders nicht bei der Verwendung von Software-Paketen mit ausreichenden Sicherheitsfunktionen.

