An 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.
1 2 3 4 | cd /var/www/mein–wordpress chown www–data:www–data –R * find . –type d –exec chmod 755 {} ; find . –type f –exec chmod 644 {} ; |
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.
- Loggt euch per FTP auf eurem Webspace ein
- Wechselt in das WordPress-Verzeichnis
- Ändert den Besitzer (falls möglich) aller Dateien und Ordner auf „www-data“ bzw. den User, in dessen Kontext euer Webserver läuft.
- Setzt die Ordnerberechtigungen (CHMOD) für alle Ordner inkl. Unterordner (d.h. rekursiv) auf 755.
- Setzt die Dateiberechtigungen für alle Dateien inkl. den Dateien in Unterordnern auf 644.
WP Rocket requires a standard setup according to WordPress rules for files/folders permission. Make sure
- files are set to 640 or 644,
- files in wp-content 664; wp-content folder 775
- and other folders are set to 750 or 755
- wp-config.php – 600
- .htaccess – 644, or 600
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 {} \;2017: Hier eine komplette Übersicht der notwendigen Berechtigungen
wp-admin/ rekursiv 755
/wp-admin/index.php 644
/wp-includes/ rekursiv 755
/wp-content/ 755
/wp-content/themes/ rekursiv 777 wenn Editor benutzt wird, sonst 755.
/wp-content/plugins/ rekursiv 777 wenn automatische Installation gewünscht.
/wp-content/upgrade 777
/wp-content/uploads 777
/wp-content/cache bei Einsatz des WP-Super Cache Plugins 777
./wp-cache-config.php 777
/wp-content/backup/ bei Einsatz des WordPress Backup Plugins rekursiv 777
/wp-content/ rekursiv je nach Plugin 755 oder 777
