47 votes

Apache "Client denied by server configuration", malgré l'autorisation d'accès au répertoire (configuration du serveur virtuel)

Dans Apache sur Ubuntu J'ai mis en place un serveur virtuel, mais dans le navigateur je continue à obtenir une erreur "403 Access forbidden" ; le journal dit " Client refusé par la configuration du serveur : /home/remix/ ".

En cherchant la solution en ligne, j'ai trouvé de nombreux messages sur l'accès au répertoire (Allow from all, etc), mais pour autant que je sache, c'est ce que j'ai déjà fait. En httpd-vhosts.conf il y a le code suivant :

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>

J'ai également ajouté

127.0.0.1    testproject

dans le fichier /etc/hosts.

De plus, le dossier /home/remix/ contient un fichier index.html et les vhosts sont activés dans httpd.conf.

Y a-t-il quelque chose que je ne vois pas ?

編集する: Il s'agit de l'entrée du journal des erreurs d'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/

77voto

Shane Madden Points 112034

Modifiez votre configuration d'autorisation :

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

...à la version 2.4 d'Apache.

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

Réviser le document de synthèse sur la mise à niveau pour obtenir des informations sur d'autres changements que vous pourriez avoir à effectuer - et sachez que la plupart des exemples de configuration et de l'assistance que vous trouverez sur Google (ainsi que sur ce site) se réfèrent à la version 2.2.

4voto

Michael Hampton Points 232226

Vérifiez les autorisations sur le répertoire. Je parierais qu'il est configuré pour interdire l'accès à toute personne autre que vous-même, par exemple :

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

Si vous voyez drwx------ c'est le cas. Corrigez le problème en lançant le programme :

chmod a+x /home/remix

3voto

ubuntuNoob Points 41

Assurez-vous que l'utilisateur qui exécute httpd a accès à ces répertoires.

3voto

Vincent Points 29

"client denied by server configuration" signifie que c'est le serveur Linux lui-même qui interdit l'accès au fichier, et non Apache.

Si la modification des autorisations, de la propriété ou de l'appartenance à un groupe ne résout pas le problème, il se peut que SELinux interdise l'accès à tout dossier qui n'a pas le contexte SE Linux approprié, comme l'explique le document suivant 'Relocalisation d'un DocumentRoot Apache sous .

  • Si l'on désactive temporairement SELinux en faisant setenforce 0 rend le fichier accessible
  • Alors que la réactivation de SELinux en faisant setenforce 0 rend à nouveau le fichier inaccessible

Il est donc certain que l'accès est interdit par SELinux, quelles que soient les permissions du fichier.

0voto

gaoithe Points 183

Une autre astuce simple (mais astucieuse) qui peut causer ce problème est lorsque les répertoires de l'utilisateur ne sont pas dans /home/* mais ailleurs, par exemple /nethome/*.

Le fichier userdir.conf fourni contient quelque chose comme ceci : (mais avec Userdir : désactivé)

$ 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 spécification du répertoire suppose que ~user == /home/user. Il suffit de modifier ou d'ajouter la spécification Directory pour que les répertoires personnels des utilisateurs soient réellement situés à cet endroit.

C'est assez évident, mais j'ai mis du temps à le comprendre ! :-P DUH !

par exemple ~user == /nethome/user

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

Voir aussi l'autorisation plus ouverte sur ce répertoire en général.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X