Apache "Client negato dalla configurazione del server", nonostante consenta l'accesso alla directory (configurazione vhost)


38

in Apache su Ubuntu ho impostato un vhost, ma nel browser continuo a ricevere un errore "Accesso vietato 403"; il registro dice " Client negato dalla configurazione del server: / home / remix / ".

Cercando la soluzione online ho trovato molti post sull'accesso alla directory (Consenti a tutti, ecc.), Ma per quanto ne so l'ho già fatto. In httpd-vhosts.conf c'è il seguente codice:

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>

Ho anche aggiunto

127.0.0.1    testproject

nel file / etc / hosts.

Inoltre, la cartella / home / remix / contiene un file index.html e i vhosts sono abilitati in httpd.conf.

C'è qualcosa che non vedo?

Modifica: questa è la voce error_log di 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/

Cosa c'è nel registro degli errori di Apache?
— Shane Madden

Ah, pensavo di aver dimenticato qualcosa ... L'ho aggiunto al post originale.
— RemiX,

Quale versione di Apache stai usando?
— Shane Madden

Apache / 2.4.2 (Unix)
— RemiX

Risposte:


65

Modifica la configurazione dell'autorizzazione:

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

... alla versione Apache 2.4 della stessa.

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

Esamina il documento di panoramica dell'upgrade per informazioni su altre modifiche che potresti dover apportare e tieni presente che la maggior parte degli esempi di configurazione e assistenza che trovi su Google (così come su questo sito) si riferisce a 2.2.


2
Se avessi tempo, registrerei un bug su questo perché httpd -t dice che non c'è nessun problema usando la sintassi precedente, e nemmeno httpd -S. Nella mia mente, il punto centrale di un controllore di configurazione è che dovrebbe evidenziare problemi! ... Se si dispone di una directory a cui si fa riferimento senza questo, non funzionerà - semplice come quello. ... Complimenti per la risposta.
— Richard T,

4

Controlla le autorizzazioni sulla directory. Scommetto che è impostato per negare l'accesso a chiunque tranne te stesso, ad esempio:

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

Se vedi drwx------esattamente, allora è così. Risolvilo eseguendo:

chmod a+x /home/remix

Vedo: drwxrwxr-x 2 remix remix 4096 ago 16 09:36 / home / remix. Ho provato comunque il comando, senza effetto.
— RemiX,

Ahh, non posso vincerli tutti.
— Michael Hampton

3

Assicurarsi che l'utente che esegue il httpdservizio abbia accesso a queste directory.


Non sono sicuro di chi sia l'utente di httpd o come controllare, ma tutti possono leggere (utente / gruppo / altro).
— RemiX,

Controllare httpd.conf per Userparam.
— cpt.Buggy,

1
Ok, dice "Utente nessuno" e "Gruppo nogroup". Ho provato a cambiarlo in "User remix" (che è il proprietario della cartella), ma anche questo non mi aiuterà.
— RemiX,

1

"client negato dalla configurazione del server" significa che il server Linux stesso proibisce l'accesso al file, non ad Apache.

Se fornire l'accesso modificando le autorizzazioni / proprietà / appartenenza al gruppo non risolve il problema, la causa del percorso potrebbe essere SELinux che vieta l'accesso a qualsiasi cartella che non ha il contesto SE Linux appropriato, come spiegato in "Riposizionamento di una DocumentRoot Apache in Selinux" .

  • Se si disabilita temporaneamente SELinux facendo si setenforce 0rende il file accessibile
  • Considerando che riattivare SELinux facendo setenforce 0nuovamente il file non è accessibile

Quindi di sicuro l'accesso è proibito a SELinux qualunque siano le autorizzazioni per i file.


0

Un altro semplice (ma ingannevole gotcha) che potrebbe causare questo problema alle persone è quando le directory degli utenti non sono in / home / * ma da qualche altra parte, ad esempio / nethome / *

Userdir.conf fornito contiene qualcosa del genere: (ma con Userdir: disabilitato)

$ 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>

La specifica della directory presuppone ~ utente == / home / utente. Basta cambiare o aggiungere la specifica della directory per dove si trovano effettivamente le home directory degli utenti.

Abbastanza ovvio ma mi ci è voluto un po 'per capire !! :-P DUH!

ad es. ~ user == / nethome / user

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

Vedi anche un'autorizzazione più aperta su quella Directory in generale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.