WordPress: Berechtigungen korrekt setzen

wordpress-logo-notext-rgbHeute möchte ich nur ein kleines, aber ziemlich nützliches Code-Snippet vorstellen, dass mir die Arbeit sehr erleichtert.

Es dürfte bekannt sein, dass ein großer Teil der Sicherheit von Webanwendungen von den gesetzten Zugriffsrechten der Dateien und Ordner abhängt. WordPress ist hier keine Ausnahme und man sollte ständig die Berechtigungen im Auge behalten.

Zum Ziel kommt man natürlich über diverse FTP-Clients, aber auch via Shell, sofern man SSH-Zugriff auf den Server hat.

Um die Berechtigungen nicht alle paar Wochen per Hand setzen zu müssen, nutze ich folgendes Code-Snippet:

Das Skript setzt die Berechtigungen für den „www-data“-User und die „www-data“-Gruppe, dies ist der Standard auf Debian-/Ubuntu-Systemen mit Apache.

Bitte den User und die Gruppe, falls nötig, ändern.

Ich übernehme keine Haftung für Probleme oder Einschränkungen, die durch dieses Skript entstehen. Das Skript ist nach bestem Wissen und Gewissen geschrieben und getestet.

#!/bin/bash
WEBSERVER_USER=www-data
WEBSERVER_GROUP=www-data
WP_ROOT=$1

if [ -z "$1" ]
then
        echo "Bitte WordPress-Document Root angeben!"
        exit 1
fi

# Standardberechtigungen setzen
find ${WP_ROOT} -exec chown ${WEBSERVER_USER}:${WEBSERVER_GROUP} {} \;
find ${WP_ROOT} -type d -exec chmod 755 {} \;
find ${WP_ROOT} -type f -exec chmod 644 {} \;

# Zugriff auf wp-config.php erlauben, aber den Rest aussperren
chgrp ${WEBSERVER_GROUP} ${WP_ROOT}/wp-config.php
chmod 660 ${WP_ROOT}/wp-config.php

# Zugriff auf .htaccess erlauben
touch ${WP_ROOT}/.htaccess
chgrp ${WEBSERVER_GROUP} ${WP_ROOT}/.htaccess
chmod 664 ${WP_ROOT}/.htaccess

# Zugriff auf wp-content erlauben
find ${WP_ROOT}/wp-content -exec chgrp ${WEBSERVER_GROUP} {} \;
find ${WP_ROOT}/wp-content -type d -exec chmod 775 {} \;
find ${WP_ROOT}/wp-content -type f -exec chmod 664 {} \;

Dieses Skript speichert man z.B. unter /usr/local/sbin/wp-perms.sh, macht es mit chmod +x wp-perms.sh ausführbar und kann es ab dann systemweit nutzen.

Als Argument erwartet das Skript den Document-Root der WordPress-Installation, beispielsweise /var/www/wordpress/. Ist kein Argument angegeben, endet das Skript.

Um das Skript automatisch auszuführen, kann man folgenden Eintrag in der Crontab setzen:

@weekly /usr/local/sbin/wp-perms.sh /var/www/wordpress/

Mehrere Installationen lassen sich ebenfalls auf diese Weise hinzufügen. Ich hoffe, das Skript ist einigen Lesern nützlich!

Fragen oder Anregungen können Sie gerne in den Kommentaren hinterlassen.

Schreibe einen Kommentar