Thema: Ubuntu – MariaDB – WordPress – Apache – CleanBlogg Theme.
Diese Seite ist nur ein Entwurf und erhebt keinen Anspruch auf Vollständigkeit oder Richtigkeit! Letztes Upadate 17. Jänner 2024.
Dateirechte im Filesystem am Server
Versionen
- WordPress jedenfalls bis 6.4.2.
Beim Installieren braucht man unter Umständen offenere Rechte als im Normalbetrieb. Nach dem Installieren sollten die Rechte in den einzelnen WordPress-Ordnern strenger gesetzt sein:
root@server/home/user/www/newblog.domain.tdl/wordpress # ls -lias total 196 114167974 4 drwxr-xr-x 5 user user 4096 Oct 7 14:07 . 113377557 4 drwxrwxr-x 3 user user 4096 Oct 7 12:23 .. 113377566 4 -rw-rw-r-- 1 user user 418 Oct 7 11:35 index.php 113377567 20 -rw-rw-r-- 1 user user 19935 Oct 7 11:35 license.txt 113377600 8 -rw-rw-r-- 1 user user 7344 Oct 7 11:35 readme.html 113377602 8 -rw-rw-r-- 1 user user 5456 Oct 7 11:35 wp-activate.php 113523171 4 drwxr-xr-x 9 user user 4096 Oct 7 11:41 wp-admin ⇒ 230706554 drwxrwxr-x 2 www-data www-data 4096 Oct 7 18:57 includes 113377606 4 -rw-rw-r-- 1 user user 364 Oct 7 11:35 wp-blog-header.php 113377612 4 -rw-rw-r-- 1 user user 1477 Oct 7 11:35 wp-comments-post.php 114167977 4 -rw-rw-rw- 1 user user 3130 Oct 7 12:27 wp-config.php 113377650 4 -rw-rw-r-- 1 user user 2853 Oct 7 11:35 wp-config-sample.php 113785980 4 drwxr-xr-x 7 www-data www-data 4096 Oct 7 14:44 wp-content 113377654 4 -rw-rw-r-- 1 user user 3286 Oct 7 11:35 wp-cron.php 113378267 12 drwxr-xr-x 17 user user 12288 Oct 7 11:37 wp-includes 113377722 4 -rw-rw-r-- 1 user user 2382 Oct 7 11:35 wp-links-opml.php 113377740 4 -rw-rw-r-- 1 user user 3353 Oct 7 11:35 wp-load.php 113377852 36 -rw-rw-r-- 1 user user 34057 Oct 7 11:35 wp-login.php 113377920 8 -rw-rw-r-- 1 user user 7786 Oct 7 11:35 wp-mail.php 113377925 16 -rw-rw-r-- 1 user user 13920 Oct 7 11:35 wp-settings.php 113377937 32 -rw-rw-r-- 1 user user 29890 Oct 7 11:35 wp-signup.php 113377942 4 -rw-rw-r-- 1 user user 4035 Oct 7 11:35 wp-trackback.php 113377969 4 -rw-rw-r-- 1 user user 3064 Oct 7 11:35 xmlrpc.php
Für den Normalbetrieb ohne Updates im Backend reicht es, wenn wenn wp-content
dem User www-data
gehört. Alle anderen sollten einem System-User zugeordnet sein, so dass dort für Webzugriffe keine Schreibrechte bestehen.
Der Update-Prozess meckert sofort, wenn etwas nicht passt, meist mit einer FTP-Abfrage.
wp-admin/includes
muss www-data
gehören, damit man Plugins im Backend updaten kann. Das ist nicht unbedingt logisch, aber unumgänglich.
Zusätzliche Sicherungschritte zb. hier:
https://www.drweb.de/magazin/eine-wordpress-installation-korrekt-absichern/.
Error 403 Forbidden
Es handelt sich beim Serverfehler 403 um ein klassisches Ärgernis. Sehr oft hängt es mit den Dateirechten (oben) zusammen, oft mit den sog. RewriteRules, die in der Apache-Konfiguration oder in einer .htaccess
-Datei im Dateisystem bei der WordPress-Installation liegt. Diese RewriteRules werden gebraucht, um schöne URLs zu haben, die unter Einstellungen/Permalinks definiert werden können.
Bei Virtual Hosts (ein Webserver für mehrere Domains) kann eine Basiskonfiguartion des Servers zu streng sein, dass der Inhalt der standardmässigen .htaccess
-Datei ausreicht. Oder wie bei mir letzthin, dass sich gewisse Anweisungen auf unterschiedlichen Ebenen widersprechen. In dem Fall hilft ein Blick in die Apache-Server-Logs (oft unter /var/log/apache2/sub.domain.tld-error.log
).
Das kann dann so aussehen:
[rewrite:error] ... Options FollowSymLinks and SymLinksIfOwnerMatch are both off, so the RewriteRule directive is also forbidden due to its similar ability to circumvent directory restrictions ...
Mit zusätzlichen Optionen kann man die RewriteRules wieder aktivieren. Hier unten ein Beispiel. Grün die Standard-Regeln die WordPress für eine .htaccess
-Datei mitliefert. Blau die Ergänzung um gesperrte RewriteRules im gegebenen Bereich zu ermöglichen. Rot die Bereichsdefinition falls man dieses Regelwerk direkt in der Apache-Konfiguration verwaltet.
<IfModule mod_rewrite.c> <Directory /home/user/sites/sub.domain.tld/wordpress> Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </Directory> </IfModule>
No Comments