399 Stimmen

Richtige Dateiberechtigungen für WordPress

Ich habe mir das hier angesehen, aber keine Details zu den besten Dateiberechtigungen gefunden. Ich habe auch einige Fragen zu WordPress-Formularen hier angesehen, aber jeder, der 777 vorschlägt, braucht offensichtlich eine kleine Lektion in Sicherheit.

Kurz gesagt, hier ist meine Frage. Welche Berechtigungen sollte ich für Folgendes haben:

  1. Root-Verzeichnis, in dem alle WordPress-Inhalte gespeichert sind
  2. wp-admin
  3. wp-content
  4. wp-includes

und dann alle Dateien in jedem dieser Ordner?

497voto

ManuelSchneid3r Punkte 14994

Bei der Einrichtung von WP benötigen Sie (der Webserver) eventuell Schreibzugriff auf die Dateien. Daher müssen die Zugriffsrechte möglicherweise locker sein.

chown www-data:www-data  -R * # Lassen Sie Apache der Besitzer sein
find . -type d -exec chmod 755 {} \;  # Ändern Sie die Verzeichnisberechtigungen rwxr-xr-x
find . -type f -exec chmod 644 {} \;  # Ändern Sie die Dateiberechtigungen rw-r--r--

Nach der Einrichtung sollten Sie die Zugriffsrechte verschärfen, gemäß WordPress absichern sollten alle Dateien außer wp-content nur vom Benutzerkonto beschreibbar sein. wp-content muss auch von www-data beschreibbar sein.

chown :  -R * # Lassen Sie Ihr Benutzerkonto der Besitzer sein
chown www-data:www-data wp-content # Lassen Sie Apache der Besitzer von wp-content sein

Vielleicht möchten Sie später die Inhalte in wp-content ändern. In diesem Fall könnten Sie

  • vorübergehend zum Benutzer www-data wechseln mit su,
  • geben Sie wp-content Gruppen Schreibzugriff 775 und treten der Gruppe www-data bei oder
  • geben Sie Ihrem Benutzer die Zugriffsrechte auf den Ordner mit ACLs.

Was immer Sie tun, stellen Sie sicher, dass die Dateien Schreibrechte für www-data haben.

60voto

Kornel Punkte 3833

Den vollen Zugriff auf alle wp-Dateien für den Benutzer www-data (der in diesem Fall der Benutzer des Webservers ist) zu gewähren, kann gefährlich sein. Also lieber NICHT dies tun:

chown www-data:www-data -R *

Es kann jedoch nützlich sein, wenn Sie WordPress und dessen Plug-ins installieren oder aktualisieren. Aber sobald Sie fertig sind, ist es keine gute Idee mehr, wp-Dateien im Besitz des Webservers zu lassen.

Es ermöglicht grundsätzlich dem Webserver, jede Datei auf Ihrer Website einzufügen oder zu überschreiben. Dies bedeutet, dass es eine Möglichkeit gibt, Ihre Website zu übernehmen, wenn es jemandem gelingt, den Webserver (oder ein Sicherheitsloch in einem .php-Skript) zu nutzen, um einige Dateien auf Ihrer Website zu platzieren.

Um Ihre Website gegen einen solchen Angriff zu schützen, sollten Sie folgendes tun:

Alle Dateien sollten im Besitz Ihres Benutzerkontos sein und von Ihnen beschreibbar sein. Jede Datei, die von WordPress Schreibzugriff benötigt, sollte vom Webserver beschreibbar sein, falls Ihr Hosting-Setup es erfordert, können diese Dateien möglicherweise von dem Benutzerkonto verwendet werden, das vom Webserver-Prozess verwendet wird.

/

Das Stammverzeichnis von WordPress: Alle Dateien sollten nur von Ihrem Benutzerkonto beschreibbar sein, außer .htaccess, wenn Sie möchten, dass WordPress automatisch Rewrite-Regeln für Sie generiert.

/wp-admin/

Bereich der WordPress-Verwaltung: Alle Dateien sollten nur von Ihrem Benutzerkonto beschreibbar sein.

/wp-includes/

Der Großteil der WordPress-Anwendungslogik: Alle Dateien sollten nur von Ihrem Benutzerkonto beschreibbar sein.

/wp-content/

Benutzerbereitgestellte Inhalte: sollen von Ihrem Benutzerkonto und vom Webserver-Prozess beschreibbar sein.

In /wp-content/ finden Sie:

/wp-content/themes/

Theme-Dateien. Wenn Sie den integrierten Theme-Editor verwenden möchten, müssen alle Dateien vom Webserver-Prozess beschreibbar sein. Wenn Sie den integrierten Theme-Editor nicht verwenden möchten, können alle Dateien nur von Ihrem Benutzerkonto beschreibbar sein.

/wp-content/plugins/

Plugin-Dateien: Alle Dateien sollten nur von Ihrem Benutzerkonto beschreibbar sein.

Andere Verzeichnisse, die möglicherweise mit /wp-content/ vorhanden sind, sollten von dem jeweiligen erforderlichen Plugin oder Theme dokumentiert werden. Berechtigungen können variieren.

Quelle und zusätzliche Informationen: http://codex.wordpress.org/Hardening_WordPress

26voto

Jadeye Punkte 2745

Für diejenigen, die ihren Wordpress-Stammordner unter ihrem Home-Ordner haben:

** Ubuntu/apache

  1. Fügen Sie Ihren Benutzer zur www-data Gruppe hinzu:

CREDIT Schreibberechtigungen für die www-data Gruppe gewähren

Sie möchten usermod für Ihren Benutzer aufrufen. Das wäre also:

sudo usermod -aG www-data deinBenutzername

** Vorausgesetzt, die Gruppe www-data existiert

  1. Überprüfen Sie, ob Ihr Benutzer zur www-data Gruppe gehört:

    groups deinBenutzername

Sie sollten etwas Ähnliches wie folgt erhalten:

deinBenutzername : deineBenutzergruppe www-data

** IhreBenutzergruppe ist in der Regel ähnlich wie Ihr Benutzername

  1. Ändern Sie den Gruppenbesitz des wp-content Ordners rekursiv, wobei der Benutzerbesitz beibehalten wird

    chown deinBenutzername:www-data -R deinWebsiteOrdner/wp-content/*

  2. Wechseln Sie in das Verzeichnis deinWebsiteOrdner/wp-content/

    cd deinWebsiteOrdner/wp-content

  3. Ändern Sie die Gruppenberechtigungen der Ordner und Unterordner rekursiv, um Schreibberechtigungen zu ermöglichen:

    find . -type d -exec chmod -R 775 {} \;

** Modus von '/home/deinBenutzername/deinWebsiteOrdner/wp-content/' geändert von 0755 (rwxr-xr-x) auf 0775 (rwxrwxr-x)

  1. Ändern Sie die Gruppenberechtigungen der Dateien und Unterdateien rekursiv, um Schreibberechtigungen zu ermöglichen:

    find . -type f -exec chmod -R 664 {} \;

Das Ergebnis sollte ungefähr so aussehen:

WAR:
-rw-r--r--  1 deinBenutzername www-data  7192 Okt  4 00:03 dateiname.html
GEÄNDERT ZU:
-rw-rw-r--  1 deinBenutzername www-data  7192 Okt  4 00:03 dateiname.html

Äquivalent zu:

chmod -R ug+rw ordnernamen

Die Berechtigungen werden wie 664 für Dateien oder 775 für Verzeichnisse sein.

P.s. Wenn jemand den Fehler 'could not create directory' beim Aktualisieren eines Plugins hat, tun Sie folgendes:
server@benutzer:~/domainname.com$ sudo chown benutzername:www-data -R wp-content
wenn Sie sich im Stammverzeichnis Ihrer Domain befinden.
Vorausgesetzt: wp-config.php hat
FTP-Zugangsdaten auf LocalHost
define('FS_METHOD','direct');

20voto

PodTech.io Punkte 4316

Am besten lesen Sie die Wordpress-Dokumentation dazu https://wordpress.org/support/article/changing-file-permissions/

  • Alle Dateien sollten dem tatsächlichen Benutzerkonto gehören, nicht dem Benutzerkonto, das für den httpd-Prozess verwendet wird
  • Die Gruppenzugehörigkeit ist unerheblich, es sei denn, es gibt spezifische Gruppenanforderungen für die Berechtigungsprüfung des Webserver-Prozesses. Dies ist normalerweise nicht der Fall.
  • Alle Verzeichnisse sollten 755 oder 750 sein.
  • Alle Dateien sollten 644 oder 640 sein. Ausnahme: wp-config.php sollte 440 oder 400 sein, um zu verhindern, dass andere Benutzer auf dem Server sie lesen können.
  • Kein Verzeichnis sollte jemals 777 erhalten, auch keine Upload-Verzeichnisse. Da der PHP-Prozess als Besitzer der Dateien läuft, erhält er die Berechtigungen des Besitzers und kann sogar in ein 755-Verzeichnis schreiben.

14voto

Ich habe die Berechtigungen wie folgt gesetzt:

    # Setze alle Dateien und Verzeichnisse des Benutzers und der Gruppe auf wp-user
    chown wp-user:wp-user -R *

    # Setze den Benutzer und die Gruppe des Upload-Ordners auf www-data
    chown www-data:www-data -R wp-content/uploads/

    # Setze alle Verzeichnisberechtigungen auf 755
    find . -type d -exec chmod 755 {} \;

    # Setze alle Dateiberechtigungen auf 644
    find . -type f -exec chmod 644 {} \;

In meinem Fall habe ich einen spezifischen Benutzer für WordPress erstellt, der sich vom Standardbenutzer des Apache unterscheidet, um den Zugriff aus dem Web auf jene Dateien zu verhindern, die diesem Benutzer gehören.

Dann wird dem Apache-Benutzer die Berechtigung gegeben, den Upload-Ordner zu bearbeiten, und schließlich werden ausreichend sichere Datei- und Ordnerberechtigungen festgelegt.

BEARBEITET

Wenn Sie W3C Total Cache verwenden, sollten Sie auch Folgendes tun:

rm -rf wp-content/cache/config
rm -rf wp-content/cache/object
rm -rf wp-content/cache/db
rm -rf wp-content/cache/minify
rm -rf wp-content/cache/page_enhanced

Dann wird es funktionieren!

BEARBEITET

Nach einer Weile der Entwicklung von WordPress-Websites würde ich unterschiedliche Dateiberechtigungen pro Umgebung empfehlen:

In der Produktion würde ich Benutzern keinen Zugriff geben, um das Dateisystem zu ändern. Ich würde ihnen nur erlauben, Ressourcen hochzuladen und bestimmten Plugin-Ordnern Zugriff zu geben, um Backups usw. durchzuführen. Aber bei der Verwaltung von Projekten unter Git und der Verwendung von Bereitstellungsschlüsseln auf dem Server ist es nicht gut, Plugins auf der Staging- oder Produktionsumgebung zu aktualisieren. Hier ist das Dateieinrichtungs-Setup für die Produktion:

# Setze den Benutzer und die Gruppe des Upload-Ordners auf www-data
chown www-data:www-data -R wp-content/uploads/

www-data:www-data = Apache- oder Nginx-Benutzer und -Gruppe

Die Staging-Umgebung wird die gleichen Berechtigungen wie die Produktion haben, da es ein Klon davon sein sollte.

Schließlich wird die Entwicklungsumgebung Zugriff haben, um Plugins, Übersetzungen, alles zu aktualisieren...

# Setze den Benutzer und die Gruppe des Upload-Ordners auf www-data
chown www-data:www-data -R wp-content/

# Setze den Benutzer und die Gruppe des Upload-Ordners auf www-data
chown dein-benutzer:wurzel-gruppe -R wp-content/themes

# Setze den Benutzer und die Gruppe des Upload-Ordners auf www-data
chown dein-benutzer:wurzel-gruppe -R wp-content/plugins/dein-plugin

www-data:www-data = Apache- oder Nginx-Benutzer und -Gruppe dein-benutzer:wurzel-gruppe = dein aktueller Benutzer und die Wurzelgruppe

Diese Berechtigungen erlauben es Ihnen, unter themes und dein-plugin Ordner ohne Erlaubnis zu entwickeln. Der Rest des Inhalts wird vom Apache- oder Nginx-Benutzer besessen, um WP die Verwaltung des Dateisystems zu ermöglichen.

Bevor Sie ein Git-Repository erstellen, führen Sie zunächst diese Befehle aus:

# Setze alle Verzeichnisberechtigungen auf 755
find . -type d -exec chmod 755 {} \;

# Setze alle Dateiberechtigungen auf 644
find . -type f -exec chmod 644 {} \;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X