Apache2-Benutzerverzeichnis aktiviert, hat jedoch noch keinen Zugriff

9

Ich versuche, einen Apache-Server auf meinem Kubuntu 13.04-Laptop einzurichten. Ich habe das Apache2-Paket installiert und sudo a2enmod userdir; sudo service apache2 restarttrotzdem, wenn ich es besuche http://localhost/~user, heißt es ungefähr so:

Forbidden

You don't have permission to access /~user on this server.

Apache/2.2.22 (Ubuntu) Server at localhost Port 80

Ergebnis von tail /var/log/apache2/access.log

127.0.0.1 - - [02/Aug/2013:16:22:01 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:16:22:02 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:17:35:30 +0200] "GET /~kaiyin HTTP/1.1" 403 501 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:17:35:30 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:17:35:30 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:17:36:26 +0200] "GET /favicon.ico HTTP/1.1" 404 499 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:17:36:26 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:21:05:17 +0200] "GET /~kaiyin HTTP/1.1" 403 501 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:21:05:17 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"
127.0.0.1 - - [02/Aug/2013:21:05:17 +0200] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"

Ergebnis von tail /var/log/apache2/error.log

[Fri Aug 02 21:05:17 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:05:17 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:06:54 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:06:54 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:06:59 2013] [error] [client 127.0.0.1] (13)Permission denied: access to /~kaiyin denied
[Fri Aug 02 21:06:59 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:06:59 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:07:17 2013] [error] [client 127.0.0.1] (13)Permission denied: access to /~kaiyin denied
[Fri Aug 02 21:07:17 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
[Fri Aug 02 21:07:17 2013] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico
qed
quelle
Haben Sie ein public_htmlVerzeichnis für den Benutzer? Hat der Benutzer, der Apache ausführt, die Berechtigung, es zu lesen?
Jordan
@ Jordanm Ja, ich habe es auf 755 gesetzt, auch versucht 777.
Qed

Antworten:

8

Die public_htmlVerzeichnisse müssen über die folgenden Berechtigungen verfügen, damit der Benutzer, auf dem Apache ausgeführt wird, darauf zugreifen kann:

$ chmod -R 755 ~/public_html

immer noch nicht arbeiten?

Wenn Sie in Ihren Apache-Fehlerprotokollen nachsehen, wird möglicherweise eine Zeile wie die folgende angezeigt:

[Fri Aug 02 21:06:59 2013] [Fehler] [Client 127.0.0.1] (13) Berechtigung verweigert: Zugriff auf / ~ kaiyin verweigert

Dies zeigt Ihnen, dass Apache in diesem Beispiel keine Berechtigung zum Navigieren zum Verzeichnis Ihres Benutzers (~ kaiyin) hat.

Wie kann ich das beheben?

Sie müssen sicherstellen, dass Lese- und Ausführungsbits entweder für eine Gruppe gesetzt sind, zu der Apache gehört, oder dass die anderen Lese- und Ausführungsbits ebenfalls im Benutzerverzeichnis festgelegt sind, damit Apache auf den public_htmlOrdner unten zugreifen kann .

Beispiel

/home
|-- [drwxr-x---]  /home/sam

/home/sam
|-- [drwxr-xr-x]  /home/sam/public_html

Verweise

slm
quelle
Ich habe das schon getan, aber ich habe immer noch einen 403 verboten.
Qed
@CravingSpirit - Beenden Sie die Apache-Protokolle ( /var/log/httpd/access.log) und ( /var/log/httpd/error.log), um festzustellen , ob zusätzliche Nachrichten vorhanden sind.
slm
Ich habe das Protokoll zum Beitrag hinzugefügt.
Qed
@CravingSpirit - Beachten Sie, dass der Zugriff auf dem ~ kaiyin` verweigert wurde? Der Benutzer von Apache hat keinen Zugriff auf die Verzeichnisse der obersten Ebene der Benutzer. Sie benötigen Lese- und Ausführungsrechte, damit Sie darauf zugreifen können.
slm
2
Eigentlich brauchen Sie mit ziemlicher Sicherheit keine 755; 711 oder sogar 710 Gruppe www-Daten sollten über die Eltern von tun public_html; Dies gilt auch für public_html, wenn Sie keine Dateilisten benötigen. Andernfalls muss Apache ebenfalls gelesen werden (also 755/750 statt 711/710).
ein CVn
1
<IfModule mod_userdir.c>
UserDir public_html
UserDir disabled root

  <Directory /home/*/public_html>
    AllowOverride All
    Options MultiViews Indexes SymLinksIfOwnerMatch
    <Limit GET POST OPTIONS>
      # Apache <= 2.2:
      #Order allow,deny
      #Allow from all

      # Apache >= 2.4:
      Require all granted
    </Limit>
    <LimitExcept GET POST OPTIONS>
      # Apache <= 2.2:
      #Order deny,allow
      #Deny from all

      # Apache >= 2.4:
      Require all denied
    </LimitExcept>
  </Directory>
</IfModule>

Stellen Sie sicher, dass Sie die richtigen Einstellungen in haben /etc/apache2/mods-enabled/userdir.conf. Nachdem ich meine public_html geändert hatte, wurde mir die Erlaubnis verweigert und ich entschied mich dann, die zu überprüfen userdir.conf. Ich habe festgestellt, dass es Einstellungen für frühere und neuere Apache-Versionen gibt. Ich wusste, dass ich die neueste Version ausgeführt habe, also habe ich die neueren Einstellungen aktiviert und jetzt funktioniert alles einwandfrei

Darryl
quelle
0

Sie können auch eine /etc/hostsDatei verwenden, um die Notwendigkeit einer temporären URL zu beseitigen. Wenn im Thema oder im Plugin (falls vorhanden) eine Referenz für die vollständige URL vorhanden ist, werden auf der Website die Inhalte nicht im richtigen Format angezeigt.

Karthik
quelle