it-swarm.com.de

Richtige Dateiberechtigungen für WordPress

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

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

  1. stammordner, in dem der gesamte Inhalt von WordPress gespeichert ist
  2. wp-admin
  3. wp-inhalt
  4. wp-includes

und dann alle Dateien in jedem dieser Ordner?

369
John Crawford

Wenn Sie WP einrichten, benötigen Sie (der Webserver) möglicherweise Schreibzugriff auf die Dateien. Daher müssen die Zugriffsrechte möglicherweise lose sein.

chown www-data:www-data  -R * # Let Apache be owner
find . -type d -exec chmod 755 {} \;  # Change directory permissions rwxr-xr-x
find . -type f -exec chmod 644 {} \;  # Change file permissions rw-r--r--

Nach dem Setup sollten Sie die Zugriffsrechte nach Hardening WordPress verschärfen = Alle Dateien mit Ausnahme von wp-Inhalten sollten nur von Ihrem Benutzerkonto beschreibbar sein. wp-content muss auch von www-data beschreibbar sein.

chown <username>:<username>  -R * # Let your useraccount be owner
chown www-data:www-data wp-content # Let Apache be owner of wp-content

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

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

Stellen Sie auf jeden Fall sicher, dass die Dateien über RW-Berechtigungen für WWW-Daten verfügen.

451
ManuelSchneid3r

Es kann gefährlich sein, dem Benutzer www-data (in diesem Fall dem Webserver-Benutzer) den vollständigen Zugriff auf alle WP-Dateien zu gewähren. Also mache lieber NICHT dies:

chown www-data:www-data -R *

Dies kann jedoch hilfreich sein, wenn Sie WordPress und seine Plug-Ins installieren oder aktualisieren. Aber wenn Sie fertig sind, ist es keine gute Idee mehr, die wp-Dateien im Besitz des Webservers zu behalten.

Grundsätzlich kann der Webserver jede Datei auf Ihrer Website ablegen oder überschreiben. Dies bedeutet, dass es eine Möglichkeit gibt, Ihre Website zu übernehmen, wenn jemand den Webserver (oder eine Sicherheitslücke in einem .php-Skript) verwendet, um einige Dateien auf Ihrer Website abzulegen.

Um Ihre Site vor einem solchen Angriff zu schützen, sollten Sie Folgendes tun:

Alle Dateien sollten Ihrem Benutzerkonto gehören und von Ihnen beschreibbar sein. Jede Datei, die Schreibzugriff von WordPress benötigt, sollte vom Webserver beschreibbar sein, sofern Ihr Hosting dies erfordert. Dies bedeutet möglicherweise, dass sich diese Dateien in Gruppenbesitz des vom Webserver verwendeten Benutzerkontos befinden müssen Prozess.

/

Das Stammverzeichnis WordPress: Alle Dateien sollten nur von Ihrem Benutzerkonto beschreibbar sein, mit Ausnahme von .htaccess, wenn Sie möchten, dass WordPress automatisch Umschreiberegeln für Sie generiert.

/wp-admin/

Der Administrationsbereich WordPress: 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/

Vom Benutzer bereitgestellter Inhalt: Soll von Ihrem Benutzerkonto und dem Webserver-Prozess beschreibbar sein.

In /wp-content/ finden Sie:

/wp-content/themes/

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

/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 Plugin oder Thema dokumentiert werden, das sie erfordert. Berechtigungen können variieren.

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

55
Kornel

Für diejenigen, die ihren wordpress Root-Ordner unter ihrem Home-Ordner haben:

** Ubuntu/Apache

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

CREDIT Erteilen von Schreibrechten für die WWW-Datengruppe

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

_Sudo usermod -aG www-data yourUserName
_

** Angenommen, die Gruppe _www-data_ existiert

  1. Überprüfen Sie, ob sich Ihr Benutzer in der Gruppe _www-data_ befindet:

    _groups yourUserName_

Sie sollten etwas bekommen wie:

_youUserName : youUserGroupName www-data
_

** youUserGroupName ähnelt normalerweise Ihrem Benutzernamen

  1. Ändern Sie rekursiv den Gruppeneigentum des Ordners "wp-content" und behalten Sie den Besitz Ihres Benutzers bei

    _chown yourUserName:www-data -R youWebSiteFolder/wp-content/*_

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

    _cd youWebSiteFolder/wp-content_

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

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

** Modus von `/ home/yourUserName/youWebSiteFolder/wp-content/'geändert von 0755 (rwxr-xr-x) zu 0775 (rwxrwxr-x)

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

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

Das Ergebnis sollte ungefähr so ​​aussehen:

_WAS:
-rw-r--r--  1 yourUserName www-data  7192 Oct  4 00:03 filename.html
CHANGED TO:
-rw-rw-r--  1 yourUserName www-data  7192 Oct  4 00:03 filename.html
_

Gleichwertig:

chmod -R ug + rw Ordnername

Die Berechtigungen sind 664 für Dateien oder 775 für Verzeichnisse.

Ps. Wenn beim Aktualisieren eines Plugins ein Fehler _'could not create directory'_ auftritt, gehen Sie wie folgt vor:
_[email protected]:~/domainame.com$ Sudo chown username:www-data -R wp-content_
wenn Sie sich an der Wurzel Ihrer Domain befinden.
Vorausgesetzt: wp-config.php hat
FTP-Anmeldeinformationen auf LocalHost
define('FS_METHOD','direct');

25
Jadeye

Lesen Sie am besten die wordpress Dokumentation zu diesem Thema https://codex.wordpress.org/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 irrelevant, es sei denn, es gibt bestimmte Gruppenanforderungen für die Überprüfung der Webserver-Prozessberechtigungen. 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 es lesen.
  • Es sollten niemals Verzeichnisse angegeben werden, auch keine Upload-Verzeichnisse. Da der PHP-Prozess als Eigentümer der Dateien ausgeführt wird, erhält er die Berechtigungen des Eigentümers und kann sogar in ein 755-Verzeichnis schreiben.
17
PodTech.io

Ich setze Berechtigungen auf:

    # Set all files and directories user and group to wp-user
    chown wp-user:wp-user -R *

    # Set uploads folder user and group to www-data
    chown www-data:www-data -R wp-content/uploads/

    # Set all directories permissions to 755
    find . -type d -exec chmod 755 {} \;

    # Set all files permissions to 644
    find . -type f -exec chmod 644 {} \;

In meinem Fall habe ich einen bestimmten Benutzer für WordPress erstellt, der sich von dem Apache-Standardbenutzer unterscheidet, der den Webzugriff auf die Dateien dieses Benutzers verhindert.

Anschließend erhält der Apache-Benutzer die Berechtigung, den Upload-Ordner zu verwalten und schließlich die erforderlichen Datei- und Ordnerberechtigungen festzulegen.

REDIGIERT

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

chmod 777 wp-content/w3tc-config
chmod 777 wp-content/cache

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 klappt es!

REDIGIERT

Nach einer Weile beim Entwickeln von WordPress Sites würde ich verschiedene Dateiberechtigungen pro Umgebung empfehlen:

In der Produktion würde ich den Benutzern keinen Zugriff gewähren, um das Dateisystem zu ändern. Ich erlaube ihnen nur, Ressourcen hochzuladen und Zugriff auf einige Plug-In-spezifische Ordner zu gewähren, um Backups usw. durchzuführen Server, es ist nicht gut, Plugins auf Staging oder Produktion zu aktualisieren. Ich lasse hier das Setup der Produktionsdatei:

# Set uploads folder user and group to www-data
chown www-data:www-data -R wp-content/uploads/

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

Das Staging teilt die gleichen Produktionsberechtigungen, wie es ein Klon davon sein sollte.

Schließlich wird die Entwicklungsumgebung Zugriff auf Update-Plugins, Übersetzungen, alles ... haben.

# Set uploads folder user and group to www-data
chown www-data:www-data -R wp-content/

# Set uploads folder user and group to www-data
chown your-user:root-group -R wp-content/themes

# Set uploads folder user and group to www-data
chown your-user:root-group -R wp-content/plugins/your-plugin

www-data: www-data = Apache- oder Nginx-Benutzer und -Gruppe your-user: root-group = your aktueller Benutzer und die Stammgruppe

Mit diesen Berechtigungen können Sie ohne Erlaubnis im Ordner themes und your-plugin entwickeln. Der Rest des Inhalts gehört dem Apache- oder Nginx-Benutzer, damit WP das Dateisystem verwalten kann.

Führen Sie vor dem Erstellen eines Git-Repos zunächst die folgenden Befehle aus:

# Set all directories permissions to 755
find . -type d -exec chmod 755 {} \;

# Set all files permissions to 644
find . -type f -exec chmod 644 {} \;
15

Die korrekten Berechtigungen für die Datei sind 644. Die korrekten Berechtigungen für den Ordner sind 755

Verwenden Sie zum Ändern der Berechtigungen die Befehle terminal und following.

find foldername -type d -exec chmod 755 {} \;
find foldername -type f -exec chmod 644 {} \;

755 für Ordner und 644 für Dateien.

9
Kappa

Es hängt tatsächlich von den Plugins ab, die Sie verwenden möchten, da einige Plugins das Root-Dokument von WordPress ändern. Aber im Allgemeinen empfehle ich so etwas für das Verzeichnis wordpress.

Dadurch wird der "root" (oder was auch immer der Benutzer ist, den Sie verwenden) als Benutzer in jeder einzelnen Datei/jedem einzelnen Ordner zugewiesen. R bedeutet rekursiv, sodass es nicht beim "html" -Ordner endet. Wenn Sie R nicht verwendet haben, gilt dies nur für das "html" -Verzeichnis.

Sudo chown -R root:www-data /var/www/html  

Dadurch wird der Eigentümer/die Gruppe von "wp-content" auf "www-data" gesetzt und der Webserver kann die Plugins über das Admin-Panel installieren.

chown -R www-data:www-data /var/www/html/wp-content

Dies setzt die Berechtigung für jede einzelne Datei im "html" -Ordner (einschließlich Dateien in Unterverzeichnissen) auf 644, sodass externe Personen keine Dateien ausführen, Dateien ändern, Gruppen keine Dateien ausführen, Dateien ändern und nur Der Benutzer darf Dateien ändern/lesen, aber selbst der Benutzer kann keine Datei ausführen. Dies ist wichtig, da es jegliche Ausführung im "html" -Ordner verhindert, auch da der Eigentümer des html-Ordners und alle anderen Ordner mit Ausnahme des wp-content-Ordners "root" sind (oder Ihr Benutzer), können die www-Daten " t Ändern Sie keine Datei außerhalb des Ordners "wp-content". Selbst wenn der Webserver verwundbar ist und jemand unbefugt auf die Site zugreift, kann er die Hauptseite mit Ausnahme der Plugins nicht löschen.

Sudo find /var/www/html -type f -exec chmod 644 {} +

Dies schränkt die Zugriffsberechtigung auf "wp-config.php" für Benutzer/Gruppen mit rw-r ----- diesen Berechtigungen ein.

chmod 640 /var/www/html/wp-config.php

Wenn sich ein Plugin oder Update beschwert hat, dass es nicht aktualisiert werden kann, greifen Sie auf das SSH zu und verwenden Sie diesen Befehl. Erteilen Sie "www-data" (Webserver) die temporäre Berechtigung zum Aktualisieren/Installieren über das Admin-Panel und stellen Sie sie dann wieder her Zurück zum "root" oder Ihrem Benutzer, sobald es abgeschlossen ist.

chown -R www-data /var/www/html

Und in Nginx (dasselbe Verfahren für den Apache), um den Ordner wp-admin vor unbefugtem Zugriff und Prüfung zu schützen. Apache2-utils wird für die Verschlüsselung des Kennworts benötigt, auch wenn Sie nginx installiert haben. Lassen Sie c weg, wenn Sie der gleichen Datei weitere Benutzer hinzufügen möchten.

Sudo apt-get install Apache2-utils
Sudo htpasswd -c /etc/nginx/.htpasswd userName

Besuchen Sie jetzt diesen Ort

/etc/nginx/sites-available/

Verwenden Sie diese Codes, um den Ordner "wp-admin" mit einem Kennwort zu schützen. Jetzt werden Sie nach dem Kennwort/Benutzernamen gefragt, wenn Sie versucht haben, auf "wp-admin" zuzugreifen. Beachten Sie, dass Sie hier die Datei ".htpasswd" verwenden, die das verschlüsselte Passwort enthält.

location ^~ /wp-admin {
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/.htpasswd;
    index  index.php index.html index.htm;
}

Starten Sie nun den Nginx neu.

Sudo /etc/init.d/nginx restart
8
Don Dilanga

Ich denke, die folgenden Regeln werden für eine wordpress Standardwebsite empfohlen:

  • Legen Sie für Ordner innerhalb von wp-content die 0755-Berechtigungen fest:

    chmod -R 0755 Plugins

    chmod -R 0755 Uploads

    chmod -R 0755 upgrade

  • Lassen Sie den Apache-Benutzer Eigentümer der oben genannten Verzeichnisse von wp-content sein:

    chown Apache uploads

    Chown Apache Upgrade

    chown Apache Plugins

7
shasi kanth
chown -Rv www-data:www-data
chmod -Rv 0755 wp-includes
chmod -Rv 0755 wp-admin/js
chmod -Rv 0755 wp-content/themes
chmod -Rv 0755 wp-content/plugins
chmod -Rv 0755 wp-admin
chmod -Rv 0755 wp-content
chmod -v 0644 wp-config.php
chmod -v 0644 wp-admin/index.php
chmod -v 0644 .htaccess
2
Grapehand

Befehle:

chown www-data:www-data -R *
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

Wobei ftp-user der Benutzer ist, mit dem Sie die Dateien hochladen

chown -R ftp-user:www-data wp-content
chmod -R 775 wp-content
2

Verwenden Sie ein Sicherheits-Plugin wie das folgende, um sicherzustellen, dass Ihre Website absolut sicher ist und Sie die richtigen Berechtigungen für Ihre Ordner verwenden:

https://en-ca.wordpress.org/plugins/all-in-one-wp-security-and-firewall/

https://en-ca.wordpress.org/plugins/wordfence/

Diese Plugins scannen Ihre Wordpress -Installation und benachrichtigen Sie über mögliche Probleme. Diese warnen Sie auch vor unsicheren Ordnerberechtigungen. Darüber hinaus empfehlen Ihnen diese Plugins, welche Berechtigungen den Ordnern zugewiesen werden sollen.

2
user296526

Verwenden Sie für OS X diesen Befehl:

Sudo chown -R www:www /www/folder_name
1
Abduhafiz

Definieren Sie in der Datei wp_config.

/var/www/html/Ihre-Projektdatei/wp-config.php

define( 'FS_METHOD', 'direct' );

chown - Ändert den Besitz von Dateien/Verzeichnissen. Dh Der Eigentümer der Datei/des Verzeichnisses ändert sich zu dem angegebenen, die Berechtigungen werden jedoch nicht geändert.

Sudo chown -R www-data:www-data /var/www
1
Harish Verma

Ich kann Ihnen nicht sagen, ob dies korrekt ist oder nicht, aber ich verwende ein Bitnami-Image über Google Compute App Engine. Ich habe Probleme mit Plugins und der Migration, und nachdem ich die Dinge weiter durcheinandergebracht habe, indem ich die Berechtigungen geändert habe, habe ich diese drei Zeilen gefunden, die alle meine Probleme gelöst haben. Ich bin mir nicht sicher, ob es der richtige Weg ist, habe aber für mich gearbeitet.

Sudo chown -R bitnami:daemon /opt/bitnami/apps/wordpress/htdocs/
Sudo find /opt/bitnami/apps/wordpress/htdocs/ -type f -exec chmod 664 {} \;
Sudo find /opt/bitnami/apps/wordpress/htdocs/ -type d -exec chmod 775 {} \;
1
wayofthefuture

Basierend auf all dem Lesen und Qualen auf meinen eigenen Websites und nachdem ich gehackt wurde, habe ich die obige Liste erstellt, die Berechtigungen für ein Sicherheits-Plugin für Wordpress namens Wordfence enthält. (Nicht damit verbunden)

In unserem Beispiel lautet der wordpress -Dokumentstamm /var/www/html/example.com/public_html

Öffnen Sie die Berechtigungen, damit www-data wie folgt in den Dokumentenstamm schreiben kann:

cd /var/www/html/example.com
Sudo chown -R www-data:www-data public_html/

Jetzt können Sie als Administrator über das Dashboard auf Ihrer Website Aktualisierungen durchführen.

Sichere Site nach Updates wird folgendermaßen abgeschlossen:

Sudo chown -R wp-user:wp-user public_html/

Der obige Befehl ändert die Berechtigungen aller in der wordpress Installation enthaltenen Elemente für den wordpress FTP-Benutzer.

cd public_html/wp-content
Sudo chown -R www-data:wp-user wflogs
Sudo chown -R www-data:wp-user uploads

Der obige Befehl stellt sicher, dass das Sicherheits-Plugin Wordfence Zugriff auf seine Protokolle hat. Das Upload-Verzeichnis kann auch von WWW-Daten beschrieben werden.

cd plugins
Sudo chown -R www-data:wp-user wordfence/

Der obige Befehl stellt auch sicher, dass das Sicherheits-Plugin für seine ordnungsgemäße Funktion Lese- und Schreibzugriff benötigt.

Verzeichnis- und Dateiberechtigungen

# Set all directories permissions to 755
find . -type d -exec chmod 755 {} \;

# Set all files permissions to 644
find . -type f -exec chmod 644 {} \;

Setzen Sie die Berechtigungen für wp-config.php auf 640, so dass nur WP-Benutzer diese Datei lesen können und sonst niemand. Berechtigungen von 440 funktionierten bei mir mit dem obigen Dateibesitz nicht.

Sudo chmod 640 wp-config.php

Automatische Wordpress-Updates mit SSH funktionierten mit PHP5 einwandfrei, brachen jedoch mit PHP7.0 aufgrund von Problemen mit dem Paket php7.0-ssh2 mit Ubuntu 16.04, und ich konnte nicht herausfinden, wie die richtige Version installiert und zum Laufen gebracht werden kann. Glücklicherweise ermöglicht ein sehr zuverlässiges Plugin mit dem Namen ssh-sftp-updater-support (kostenlos) automatische Updates mit SFTP, ohne dass libssh2 benötigt wird. Daher müssen die oben genannten Berechtigungen nur in seltenen Fällen bei Bedarf gelockert werden.

0
spinozarabel