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.