Katalog użytkownika Apache2 włączony, ale nadal nie ma dostępu

9

Próbuję skonfigurować serwer apache na moim laptopie Kubuntu 13.04. Zainstalowałem pakiet apache2 sudo a2enmod userdir; sudo service apache2 restart, ale mimo to, kiedy odwiedzam http://localhost/~user, mówi coś takiego:

Forbidden

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

Apache/2.2.22 (Ubuntu) Server at localhost Port 80

Wynik 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"

Wynik 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
co było do okazania
źródło
Czy masz public_htmlkatalog dla użytkownika? Czy użytkownik uruchamiający apache ma uprawnienia do odczytu?
Jordan
@jordanm Tak, ustawiłem go na 755, próbowałem także 777.
qed

Odpowiedzi:

8

Te public_htmlkatalogi muszą mieć swoje uprawnienia jak to tak, że użytkownik, który Apache działa jako Access może go:

$ chmod -R 755 ~/public_html

nadal nie działa?

Jeśli spojrzysz na dzienniki błędów Apache, możesz zobaczyć taką linię:

[Pt 02 sierpnia 21:06:59 2013] [błąd] [klient 127.0.0.1] (13) Odmowa dostępu: odmowa dostępu do / ~ kaiyin

Mówi ci to, że Apache nie ma uprawnień do nawigacji w katalogu twojego użytkownika (~ kaiyin) w tym przykładzie.

Jak to naprawić?

Musisz upewnić się, że bity read + execute są ustawione dla grupy, do której należy Apache, lub inne bity read + execute są ustawione w katalogu użytkownika, aby Apache mógł uzyskać dostęp do public_htmlfolderu poniżej.

Przykład

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

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

Bibliografia

slm
źródło
Już to zrobiłem, ale wciąż mam zakaz 403.
qed
@CravingSpirit - sprawdź logi apache ( /var/log/httpd/access.log) i ( /var/log/httpd/error.log), aby sprawdzić, czy są jakieś dodatkowe wiadomości.
slm
Dodałem dziennik do postu.
qed
@CravingSpirit - zauważysz odmowę dostępu na ~ kaiyin`? Użytkownik Apache nie ma dostępu do katalogów najwyższego poziomu użytkowników. Musisz mieć uprawnienia do odczytu i wykonywania, aby mieć do nich dostęp.
slm
2
W rzeczywistości prawie na pewno nie potrzebujesz 755; 711 lub nawet 710 grupowe dane www powinny zrobić na rodziców public_html; zrobi to również na public_html, jeśli nie potrzebujesz list plików, w przeciwnym razie Apache też będzie musiał odczytać (więc 755/750 zamiast 711/710).
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>

Upewnij się, że masz prawidłowe ustawienia w /etc/apache2/mods-enabled/userdir.conf. Otrzymałem odmowę dostępu po chmodding my public_html, a następnie postanowiłem sprawdzić userdir.conf. Zauważyłem, że były ustawienia dla wcześniejszych wersji apache, a także nowszych. Wiedziałem, że korzystam z najnowszej wersji, więc włączyłem nowsze ustawienia i teraz wszystko działa dobrze

Darryl
źródło
Dziękujemy za dołączenie informacji o Apache <= 2.2, dlatego nie działało to dla mnie i właśnie tego potrzebowałem!
Wowfunhappy
0

Możesz także użyć /etc/hostspliku, aby wyeliminować potrzebę tymczasowego adresu URL. Jeśli istnieje odniesienie do pełnego adresu URL w motywie lub wtyczce (jeśli masz), witryna nie wyświetli zawartości w odpowiednim formacie.

Karthik
źródło