Apache „Klient odmówiony przez konfigurację serwera”, pomimo zezwalania na dostęp do katalogu (konfiguracja vhost)


38

w Apache na Ubuntu skonfigurowałem vhost, ale w przeglądarce wciąż pojawia się błąd „403 Access zabroniony”; w dzienniku jest napisane „ Klient odmówiony przez konfigurację serwera: / home / remix / ”.

Szukając rozwiązania online, znalazłem wiele postów na temat dostępu do katalogu (Zezwalaj na wszystko itp.), Ale o ile wiem, już to zrobiłem. W httpd-vhosts.conf znajduje się następujący kod:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/opt/lampp/htdocs/"
    ServerName localhost
    ServerAlias localhost
    ErrorLog "logs/dummy-host.example.com-error_log"
    CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot "/home/remix/"
    ServerName testproject
    ServerAlias testproject
    <Directory "/home/remix/">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

Dodałem również

127.0.0.1    testproject

do pliku / etc / hosts.

Ponadto folder / home / remix / zawiera plik index.html, a vhosty są włączone w httpd.conf.

Czy jest coś, czego nie widzę?

Edycja: To jest wpis dziennika błędów Apache:

[Sat Aug 18 09:15:32.666938 2012] [authz_core:error] [pid 6587] 
[client 127.0.0.1:38873] AH01630: client denied by server configuration: /home/remix/

Co znajduje się w dzienniku błędów Apache?
Shane Madden

Ach, myślałem, że coś zapomniałem ... Dodałem to do oryginalnego postu.
RemiX,

Jakiej wersji Apache używasz?
Shane Madden

Apache / 2.4.2 (Unix)
RemiX

Odpowiedzi:


65

Zmień konfigurację autoryzacji:

<Directory /home/remix/>
    #...
    Order allow,deny
    Allow from all
</Directory>

... do wersji Apache 2.4 tego samego.

<Directory /home/remix/>
    #...
    Require all granted
</Directory>

Przejrzyj dokument przeglądu aktualizacji, aby uzyskać informacje o innych zmianach, które mogą być konieczne - i pamiętaj, że większość przykładów konfiguracji i pomocy, które znajdziesz w Google (jak również na tej stronie), dotyczy wersji 2.2.


2
Gdybym miał czas, zarejestrowałbym błąd, ponieważ httpd -t mówi, że nie ma problemu ze starszą składnią, podobnie jak httpd -S. Moim zdaniem chodzi o to, że moduł sprawdzania konfiguracji powinien wskazywać problemy! ... Jeśli masz katalog, do którego się odwołujesz, to nie zadziała - to takie proste. ... Podnosi odpowiedź.
Richard T

4

Sprawdź uprawnienia do katalogu. Założę się, że ma to uniemożliwić dostęp do nikogo poza tobą, na przykład:

$ ls -ld /home/remix
drwx------ 92 remix remix 4096 Aug 17 22:59 /home/remix

Jeśli widzisz drwx------dokładnie, to tak jest. Napraw to, uruchamiając:

chmod a+x /home/remix

Widzę: remiks drwxrwxr-x 2 4096 16 sierpnia 09:36 / home / remiks. I tak spróbowałem polecenia bez skutku.
RemiX,

Ach, nie mogę ich wszystkich wygrać.
Michael Hampton

3

Upewnij się, że użytkownik uruchomionej httpdusługi ma dostęp do tych katalogów.


Nie jestem pewien, kim jest użytkownik httpd ani jak to sprawdzić, ale każdy może czytać (użytkownik / grupa / inny).
RemiX,

Sprawdź Userparametr httpd.conf .
kpt. Buggy,

1
Ok, mówi „Użytkownik nikt” i „Grupuj nogroup”. Próbowałem zmienić go na „Remiks użytkownika” (który jest właścicielem folderu), ale nawet to nie pomoże.
RemiX,

1

„klient odmówiony przez konfigurację serwera” oznacza, że ​​sam serwer Linux zabrania dostępu do pliku, a nie Apache.

Jeśli zapewnienie dostępu poprzez zmianę uprawnień / własności / członkostwa w grupie nie rozwiąże problemu, przyczyną trasy może być SELinux zabraniający dostępu do dowolnego folderu, który nie ma odpowiedniego kontekstu SE Linux, jak wyjaśniono w „Przenoszenie Apache DocumentRoot w Selinux” .

  • Jeśli tymczasowe wyłączenie SELinux przez wykonanie setenforce 0spowoduje, że plik będzie dostępny
  • Ponowne włączenie SELinux przez wykonanie setenforce 0powoduje, że plik ponownie nie jest dostępny

Zatem na pewno dostęp jest zabroniony przez SELinux bez względu na uprawnienia do plików.


0

Innym prostym (ale podstępnym gotcha), który może powodować ten problem dla ludzi, jest to, że katalogów użytkowników nie ma w katalogu / home / *, ale gdzie indziej np. / Nethome / *

Podany plik userdir.conf zawiera coś takiego: (ale z Userdir: disabled)

$ cat /etc/httpd/conf.d/userdir.conf 
<IfModule mod_userdir.c>
    UserDir enabled
    UserDir public_html
</IfModule>

<Directory "/home/*/public_html">
    AllowOverride FileInfo AuthConfig Limit Indexes
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS
</Directory>

Specyfikacja katalogu zakłada ~ użytkownik == / home / użytkownik. Po prostu zmień lub dodaj specyfikację katalogu, aby faktycznie określić katalogi domowe użytkowników.

Dość oczywiste, ale zajęło mi to trochę czasu !! :-P DUH!

np. ~ użytkownik == / nethome / user

<Directory "/nethome/*/public_html">
    AllowOverride All
    Options MultiViews Indexes Includes FollowSymLinks
    Require all granted
</Directory>

Zobacz także ogólnie bardziej otwarte uprawnienia do tego katalogu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.