Korrigieren Sie die Berechtigungen für / var / www und wordpress

41

Ich habe einen LAMP-Server eingerichtet und kann über SSH und die Seite "it works" von einem Webbrowser innerhalb meines Netzwerks (über die IP-Adresse) und von außerhalb mit dyndns auf die Seite zugreifen.

Wir haben einige Wordpress-Projekte, die sich in den Unterverzeichnissen / var / www / wordpress1 / var / www / wordpress2 usw. befinden. Ich kann nicht über einen Browser auf diese Unterverzeichnisse zugreifen, um WP einzurichten - oder (ich nehme an) das zu sehen Inhalt in einem Browser. In meinem Browser wird ein 403 Forbidden-Fehler angezeigt.

Ich gehe davon aus, dass dies ein Berechtigungsproblem ist. Können Sie mir bitte die richtigen Einstellungen für die Berechtigungen für Folgendes mitteilen:

  1. Lassen Sie die Entwickler und mich lesen / schreiben.
  2. WP einrichten und seine Sache machen zu lassen
  3. Ermöglichen Sie Besuchern den Zugriff auf die Websites über das Web.

Ich sollte auch erwähnen, dass es sich bei den Unterordnern tatsächlich um Simlinks zu Ordnern auf einer anderen internen Festplatte handelt. Ich glaube nicht, dass dies einen Unterschied macht, aber ich dachte, ich sollte dies offenlegen.

total 12
drwxr-xr-x  2 root root 4096 2012-07-12 10:55 .
drwxr-xr-x 13 root root 4096 2012-07-11 20:02 ..
lrwxrwxrwx  1 root root   43 2012-07-11 20:45 admin_media ->     /root/django_src/django/contrib/admin/media
-rw-r--r--  1 root root  177 2012-07-11 17:50 index.html
lrwxrwxrwx  1 root root   14 2012-07-11 20:42 media -> /hdd/web/media
lrwxrwxrwx  1 root root   18 2012-07-12 10:55 wordpress -> /hdd/web/wordpress

Hier ist das Ergebnis der Verwendung chown -R www-data:www-data /var/www

total 12
drwxr-xr-x  2 www-data www-data 4096 2012-07-12 10:55 .
drwxr-xr-x 13 root     root     4096 2012-07-11 20:02 ..
lrwxrwxrwx  1 www-data www-data   43 2012-07-11 20:45 admin_media -> /root/django_src/django/contrib/admin/media
-rw-r--r--  1 www-data www-data  177 2012-07-11 17:50 index.html
lrwxrwxrwx  1 www-data www-data   14 2012-07-11 20:42 media -> /hdd/web/media
lrwxrwxrwx  1 www-data www-data   18 2012-07-12 10:55 wordpress -> /hdd/web/wordpress

Ich kann immer noch nicht über einen Browser zugreifen.

dpbklyn
quelle
Bitte posten Sie die Ausgabe des Befehls ls -la /var/www.
SirCharlo
Bitte tragen Sie diese Information in Ihre Frage ein!
Jorge Castro
OK, es dauerte eine Sekunde, bis ich mich daran erinnerte, wie man eine Postleitzahl
schreibt
chown -R www-data:www-data /var/www
Okay
2
Ich denke, Ihr Problem ist jetzt, dass Sie Links verwenden. Apache folgt keinen Links. Verschieben Sie diese Dateien nach / var / www und konfigurieren Sie Apache so, dass Vitrualhosts verwendet werden. Weitere Informationen finden Sie unter help.ubuntu.com/10.04/serverguide/httpd.html. Alternativ können Sie /hdd/web/wordpressApache (Stammverzeichnis) ordnungsgemäß konfigurieren. Sie können Apache so konfigurieren, dass Links verwendet werden. Dies wird jedoch nicht empfohlen. Siehe auch help.ubuntu.com/community/WordPress
Panther

Antworten:

81

Stellen Sie zunächst sicher, dass Ihr Benutzername in der www-dataGruppe enthalten ist. Wenn nicht, können Sie Ihren Benutzernamen als www-dataGruppe hinzufügen

sudo adduser $USER www-data

Danach sollten Sie den Besitz von / var / www in Ihren Benutzernamen ändern

sudo chown $USER:www-data -R /var/www

Im nächsten Schritt sollten Sie für die allgemeine Praxis die Berechtigung in 755 (rwxr-xr-x) ändern. Aus Sicherheitsgründen sollten Sie die Berechtigung nicht in 777 ändern

sudo chmod u=rwX,g=srX,o=rX -R /var/www

Bezogen auf bestimmte Berechtigungen für WordPress oder Laravel oder ein anderes Framework, können Sie die Dokumentation jeweils lesen.

Ich hoffe es hilft...

metamorph
quelle
1
hat bei mir nicht funktioniert, füge ich hinzusudo chown www-data:www-data -R mywordpressdirectory/
Louis
Nachdem Sie den Eigentümer geändert haben, sollten Sie auch die Berechtigung ändern. Haben Sie Ihre Erlaubnis auf 755 geändert?
Metamorph
1
Er tat mit chmod. Er ändert die Erlaubnis auf 755 mit Sticky Bits (um neue Dateien im Besitz von WWW-Daten zu behalten.)
Zachary Dahan
Die beste Erklärung, die ich finden konnte, kurz und bündig. Vielen Dank.
Banago
1
Daher können Sie keine Plugins / Themes usw. im Admin-Bereich installieren / entfernen, da WordPress keine Schreibrechte hat.
Igor Skoldin
3

Anscheinend wird dies im Ubuntu Server Guide empfohlen:

Kapitel 11. Webserver.

1.4. Schreibberechtigung teilen

Damit mehr als ein Benutzer in dasselbe Verzeichnis schreiben kann, muss einer Gruppe, die sie gemeinsam nutzen, eine Schreibberechtigung erteilt werden. Im folgenden Beispiel wird der Gruppe "Webmaster" die gemeinsame Schreibberechtigung für / var / www / html erteilt.

Ich benutze WWW-Daten . Ersetzen Sie einfach "Webmaster" durch Ihre Gruppe, und stellen Sie sicher, dass Sie den Benutzer der Gruppe hinzufügen.

sudo chgrp -R webmasters /var/www/html
sudo find /var/www/html -type d -exec chmod g=rwxs "{}" \;
sudo find /var/www/html -type f -exec chmod g=rws "{}" \;

Ich habe es gerade mit Dreamweaver von meinem Mac-Desktop aus getestet und Dateien hochgeladen und ersetzt, hinzugefügte Dateien usw., und es behält die korrekten Berechtigungen mit einer Ausnahme, der lokale Benutzer wird Eigentümer neuer Dateien zusammen mit WWW-Daten, aber alle Dateien, die von root im erstellt wurden Das HTML-Verzeichnis behält seinen Besitz als root, kann jedoch von lokalen Benutzern bearbeitet werden.

$ls -l
$-rw-rw-r-- 1 localUser www-data 11505 May 28 09:56 index2.html
$-rw-rwSr-- 1 root  www-data 11535 May 28 09:58 index.html

Hoffe, das klärt die Dinge auf und hilft den Müden, denn ich weiß, dass ich dieser Situation immer müde war, aber jetzt ist es mir klar.

Oh, und ich empfehle dringend, sftp mit Schlüsseln zu verwenden, um auf Ihr FTP zuzugreifen. Funktioniert hervorragend für mich und benötigt weder PureFTP noch eine andere unsichere Methode, um die Dateien auf die Website zu übertragen. Auf der Digital Ocean-Website finden Sie einige Tutorials zum Sichern Ihres Servers mit SSH-Schlüsseln:

So konfigurieren Sie die schlüsselbasierte SSH-Authentifizierung auf einem Linux-Server

MagicCamera
quelle
1) das setgid Bits auf Dateien belässt. Sieht seltsam aus, macht nichts, öffnet die Tür zu Sicherheitsproblemen, wenn Benutzer Dateien ausführbar machen und ausführen können. Wenn Sie mit setgid für Dateien zufrieden sind, ersetzen Sie komplexe finds durch just sudo chmod -R g=srwX /var/www/html.
Temoto
2) find -exec chmodwird ein separates Programm für jede Datei erzeugen, was zeitaufwendig ist und unnötigen Druck auf das System ausübt, wenn Sie viele Dateien haben. Lösung: sudo find /var/www/html -type f -print0 |sudo xargs -0 chmod g=rw. xargs wird versuchen, einer einzelnen Instanz von so viele Dateipfade wie möglich zuzuweisen chmod.
Temoto
0

Überprüfen Sie, ob Apache Ausführungsrechte für /hdd/web/mediaund hat /hdd/web/wordpress.

Lauf:

chmod o+x /root /root/site /root/site/about

Außerdem muss Apache so konfiguriert sein, dass der Zugriff auf das Verzeichnis im Dateisystem möglich ist. Dies muss von einem Systemadministrator durchgeführt werden, indem eine Direktive in die Apache-Konfigurationsdateien (httpd.conf) eingefügt wird.

Da sich das reale Verzeichnis im Webstamm befindet, muss darauf zugegriffen werden können, aber FollowSymLinks wurde möglicherweise nicht für das Verzeichnis aktiviert - dies muss auch der Direktive hinzugefügt werden.

Siehe http://httpd.apache.org/docs/2.0/mod/core.html#directory

Jasmin
quelle
Vielen Dank an alle ... Ich habe mich für den Weg des geringsten Widerstands entschieden ... die Symlinks entfernt. Alles funktioniert perfekt.
Dpbklyn
0

Lesen Sie die Installationsanleitung für Ubuntu .

chown -R www-data /usr/share/wordpress

Vielleicht ist es einfacher, es auf diese Weise zu installieren, als zu versuchen, die Dateien zu entpacken /var/www

https://help.ubuntu.com/community/WordPress ...

Wie auch immer, WordPress läuft auf Apache ... richtig? wenn du es so machen willst .. du zeigst do as @metamorph an dann gib apache2 folgende erlaubnis httpd.conf:

<VirtualHost *:80>
        ServerName site
        ServerName site.domain
        DocumentRoot /srv/www/wordpress.site

        DirectoryIndex index.php

</VirtualHost>

und dann default-server.conf.

<Directory "/srv/www/wordpress.site">
        Options None
        AllowOverride None
        Order allow,deny
        Allow from all
</Directory>

Am besten ist es, wenn Sie Schritt für Schritt https://help.ubuntu.com/community/WordPress ausführen

maniat1k
quelle