Dateiberechtigungen aendern und Empfehlungen fuer WordPress auf einem Linux-System
Um Ihre WordPress-Installation abzusichern, ist die Einstellung der empfohlenen Dateiberechtigungen wichtig. Im Folgenden finden Sie einige Empfehlungen, die aus verschiedenen Quellen im Internet zusammengetragen wurden.
Zunaechst eine kurze Zusammenfassung der Empfehlungen:
# Auf sichere Standardwerte zuruecksetzen find /usr/share/wordpress -exec chown www-data:www-data {} \; find /usr/share/wordpress -type d -exec chmod 755 {} \; find /usr/share/wordpress -type f -exec chmod 644 {} \; # WordPress erlauben, wp-config.php zu verwalten (aber oeffentlichen Zugriff verhindern) chgrp www-data /usr/share/wordpress/wp-config.php chmod 660 /usr/share/wordpress/wp-config.php # WordPress erlauben, .htaccess zu verwalten chgrp www-data /usr/share/wordpress/.htaccess chmod 664 /usr/share/wordpress/.htaccess # WordPress erlauben, wp-content zu verwalten find /usr/share/wordpress/wp-content -exec chgrp www-data {} \; find /usr/share/wordpress/wp-content -type d -exec chmod 775 {} \; find /usr/share/wordpress/wp-content -type f -exec chmod 664 {} \;
Dies ist hauptsaechlich fuer diejenigen, die es eilig haben und direkt loslegen moechten. Im Grunde versuchen Sie zu begrenzen, wer was auf Ihrem Webserver tun darf. Nachfolgend finden Sie die Anweisungen von wordpress.org zur detaillierteren Verwaltung von Berechtigungen:
Entnommen von: http://codex.wordpress.org/Changing_File_Permissions
Auf Computer-Dateisystemen haben verschiedene Dateien und Verzeichnisse Berechtigungen, die festlegen, wer und was sie lesen, schreiben, aendern und darauf zugreifen darf. Dies ist wichtig, da WordPress moeglicherweise Schreibzugriff auf Dateien in Ihrem wp-content-Verzeichnis benoetigt, um bestimmte Funktionen zu ermoeglichen.
Berechtigungsmodi
7 5 5
user group world
r+w+x r+x r+x
4+2+1 4+0+1 4+0+1 = 755
Der Berechtigungsmodus wird berechnet, indem die folgenden Werte fuer den Benutzer, die Dateigruppe und alle anderen addiert werden:
- R ead (Lesen) 4 - Darf Dateien lesen
- W rite (Schreiben) 2 - Darf Dateien schreiben/aendern
- eX ecute (Ausfuehren) 1 - Lesen/Schreiben/Loeschen/Aendern/Verzeichnis
Beispiele fuer Berechtigungsmodi
| Modus | Zeichenkette | Erklaerung |
|---|---|---|
| 0477 | -r—rwxrwx | Eigentuemer hat nur Leserecht (4), andere und Gruppe haben rwx (7) |
| 0677 | -rw-rwxrwx | Eigentuemer hat nur rw (6), andere und Gruppe haben rwx (7) |
| 0444 | -r—r—r— | Alle haben nur Leserecht (4) |
| 0666 | -rw-rw-rw- | Alle haben nur rw (6) |
| 0400 | -r-------- | Eigentuemer hat nur Leserecht (4), Gruppe und andere haben keine Berechtigung (0) |
| 0600 | -rw------- | Eigentuemer hat nur rw, Gruppe und andere haben keine Berechtigung |
| 0670 | -rw-rwx--- | Eigentuemer hat nur rw, Gruppe hat rwx, andere haben keine Berechtigung |
Berechtigungsschema fuer WordPress
Berechtigungen variieren von Host zu Host, daher beschreibt dieser Leitfaden nur allgemeine Grundsaetze. Typischerweise sollten alle Dateien Ihrem Benutzerkonto (FTP) auf Ihrem Webserver gehoeren und von diesem Konto beschreibbar sein.
HINWEIS: Wenn Sie WordPress selbst installiert haben, muessen Sie die Dateiberechtigungen wahrscheinlich nicht aendern. Es sei denn, Sie haben Probleme mit Berechtigungsfehlern.
Typischerweise sollten alle WordPress-Kerndateien nur von Ihrem Benutzerkonto beschreibbar sein. Wenn Sie jedoch mod_rewrite Permalinks oder andere .htaccess-Funktionen verwenden, sollten Sie sicherstellen, dass WordPress auch in Ihre /.htaccess-Datei schreiben kann.
/
|- index.php
|- wp-admin
| `- wp-admin.css
|- wp-blog-header.php
|- wp-comments-post.php
|- wp-commentsrss2.php
|- wp-config.php
|- wp-content
| |- cache
| |- plugins
| |- themes
| `- uploads
|- wp-cron.php
|- wp-includes
`- xmlrpc.php
Shared Hosting mit suexec
Das oben Gesagte gilt moeglicherweise nicht fuer Shared-Hosting-Systeme, die den “suexec”-Ansatz zur Ausfuehrung von PHP-Binaerdateien verwenden. In einer solchen Konfiguration ist das korrekte Berechtigungsschema einfach zu verstehen:
- Alle Dateien sollten dem tatsaechlichen Benutzerkonto gehoeren, nicht dem httpd-Prozesskonto.
- Alle Verzeichnisse sollten 755 oder 750 sein.
- Alle Dateien sollten 644 oder 640 sein. Ausnahme: wp-config.php sollte 600 sein, damit andere Benutzer auf dem Server sie nicht lesen koennen.
- Kein Verzeichnis sollte jemals 777 haben, auch keine Upload-Verzeichnisse.
Einen FTP-Client verwenden
FTP-Clients ermoeglichen es Ihnen, Berechtigungen fuer Dateien und Verzeichnisse auf Ihrem Remote-Host festzulegen. Diese Funktion wird im Programmenue oft chmod oder Berechtigungen festlegen genannt.
Versteckte Dateien anzeigen
Standardmaessig blenden die meisten FTP-Clients versteckte Dateien (die mit einem Punkt beginnen) aus. Um versteckte Dateien in FileZilla anzuzeigen, waehlen Sie ‘Ansicht’ im oberen Menue und dann ‘Versteckte Dateien anzeigen’.
Die Kommandozeile verwenden
Wenn Sie Shell/SSH-Zugang zu Ihrem Hosting-Konto haben, koennen Sie chmod verwenden, um Dateiberechtigungen zu aendern. Dies ist die bevorzugte Methode fuer erfahrene Benutzer.
Sie koennen alle Dateien in Ihrem wp-content-Verzeichnis in zwei Schritten beschreibbar machen, aber bevor Sie jede einzelne Datei und jeden Ordner beschreibbar machen, sollten Sie zuerst sicherere Alternativen ausprobieren. Ersetzen Sie DIR durch den Ordner, in den Sie schreiben moechten:
chmod -v 746 DIR
chmod -v 747 DIR
chmod -v 756 DIR
chmod -v 757 DIR
chmod -v 764 DIR
chmod -v 765 DIR
chmod -v 766 DIR
chmod -v 767 DIR
Wenn diese nicht funktionieren, versuchen Sie alle erneut in der gleichen Reihenfolge, aber ersetzen Sie -v durch -R, das die Aenderung rekursiv auf jede Datei im Ordner anwendet.
Ueber Chmod
chmod ist ein Unix-Befehl, der “change mode” (Modus aendern) bedeutet. Das -R-Flag bedeutet, die Aenderung rekursiv auf jede Datei und jedes Verzeichnis innerhalb von wp-content anzuwenden.
Wenn Sie Permalinks verwenden, sollten Sie auch die Berechtigungen von .htaccess aendern:
- Gehen Sie zum Hauptverzeichnis von WordPress
- Geben Sie
chmod -v 666 .htaccessein
HINWEIS: Aus Sicherheitsgruenden ist selbst ein geringer Schutz besser als ein fuer alle beschreibbares Verzeichnis. Beginnen Sie mit niedrigen Berechtigungswerten wie 744 und arbeiten Sie sich hoch. Verwenden Sie 777 nur wenn noetig und hoffentlich nur voruebergehend.
Die Gefahren von 777
7 7 7
user group world
r+w+x r+w+x r+w+x
4+2+1 4+2+1 4+2+1 = 777
Oft wird der Apache-Server von den dhapache- oder nobody-Benutzerkonten betrieben. Diese Konten haben aus gutem Grund eingeschraenkten Zugriff auf Dateien auf dem Server. Indem Sie Ihre persoenlichen Dateien und Ordner, die Ihrem Benutzerkonto gehoeren, fuer alle beschreibbar machen, machen Sie sie buchstaeblich fuer die ganze Welt beschreibbar.
Das schlimmste Ergebnis
Das Schlimmste, was als Ergebnis von 777-Berechtigungen passieren kann, ist, dass ein boesartiger Angreifer eine schaedliche Datei hochladen oder eine vorhandene Datei modifizieren kann, um Code auszufuehren, und damit die vollstaendige Kontrolle ueber Ihr Blog hat, einschliesslich Ihrer Datenbankinformationen und Ihres Passworts.
Einen Workaround finden
Es ist normalerweise ziemlich einfach, die erweiterten Funktionen der beeindruckenden WordPress-Plugins zu nutzen, ohne sich selbst in Gefahr zu bringen. Kontaktieren Sie den Plugin-Autor oder Ihren Server-Support und bitten Sie um einen Workaround.
Sichere Dateiberechtigungen finden
Die .htaccess-Datei wird vom Eigentuemer des Prozesses aufgerufen, der den Server ausfuehrt. Wenn Sie die Berechtigungen zu niedrig setzen, kann Ihr Server nicht auf die Datei zugreifen und verursacht einen Fehler. Beginnen Sie restriktiv und erhoehen Sie die Berechtigungen, bis es funktioniert.
Beispiele fuer Berechtigungseinstellungen
Standardberechtigungen (umask 022):
644 -rw-r--r-- /home/user/wp-config.php
644 -rw-r--r-- /home/user/cgi-bin/.htaccess
644 -rw-r--r-- /home/user/cgi-bin/php.ini
755 -rwxr-xr-x /home/user/cgi-bin/php.cgi
755 -rwxr-xr-x /home/user/cgi-bin/php5.cgi
Gesicherte Berechtigungen:
600 -rw------- /home/user/wp-config.php
604 -rw----r-- /home/user/cgi-bin/.htaccess
600 -rw------- /home/user/cgi-bin/php.ini
711 -rwx--x--x /home/user/cgi-bin/php.cgi
100 ---x------ /home/user/cgi-bin/php5.cgi
.htaccess-Berechtigungen
644 > 604 - Das Bit, das der Gruppenbesitzer-Leseberechtigung fuer die .htaccess-Datei entsprach, wurde entfernt.
php.ini-Berechtigungen
644 > 600 - Zuvor konnten alle Gruppen und alle Benutzer mit Serverzugang auf die php.ini zugreifen. Da die php.ini nur vom php.cgi-Prozess verwendet wird, braucht nur dieser Benutzer Zugriff.
php.cgi-Berechtigungen
755 > 711 - Diese Datei ist eine kompilierte php-cgi-Binaerdatei. Die Standardberechtigungen sind 755.
php5.cgi-Berechtigungen
755 > 100 - Da das Benutzerkonto der Eigentuemer des PHP-CGI-Prozesses ist, brauchen keine anderen Benutzer oder Gruppen Zugriff.