Apache "Cliente denegado por la configuración del servidor", a pesar de permitir el acceso al directorio (configuración de host)

38

en Apache en Ubuntu he configurado un vhost, pero en el navegador sigo recibiendo un error "403 Acceso prohibido"; el registro dice " Cliente denegado por la configuración del servidor: / home / remix / ".

Buscando la solución en línea, encontré muchas publicaciones sobre el acceso al directorio (Permitir desde todas, etc.), pero que yo sepa, ya lo hice. En httpd-vhosts.conf hay el siguiente código:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin [email protected]
    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>

También he añadido

127.0.0.1    testproject

al archivo / etc / hosts.

Además, la carpeta / home / remix / contiene un archivo index.html y los vhosts están habilitados en httpd.conf.

¿Hay algo que no esté viendo?

Editar: Esta es la entrada Apache error_log:

[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/
RemiX
fuente
¿Qué hay en el registro de errores de Apache?
Shane Madden
Ah, pensé que olvidé algo ... Lo agregué a la publicación original.
RemiX
¿Qué versión de Apache estás usando?
Shane Madden
Apache / 2.4.2 (Unix)
RemiX

Respuestas:

65

Cambie su configuración de autorización:

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

... a la versión Apache 2.4 de la misma.

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

Revise el documento de descripción general de la actualización para obtener información sobre otros cambios que necesite realizar, y tenga en cuenta que la mayoría de los ejemplos de configuración y asistencia que encuentra en Google (así como en este sitio) se refieren a 2.2.

Shane Madden
fuente
2
Si tuviera tiempo, registraría un error sobre esto porque httpd -t dice que no hay problema al usar la sintaxis anterior, y tampoco httpd -S. En mi opinión, el objetivo de un verificador de configuración es que debería estar señalando problemas. ... Si tiene un directorio al que hace referencia sin esto, no funcionará, así de simple. ... aprobado por la respuesta.
Richard T
4

Verifique los permisos en el directorio. Apuesto a que está configurado para denegar el acceso a cualquier persona que no sea usted, por ejemplo:

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

Si ve drwx------exactamente, entonces este es el caso. Solucionarlo ejecutando:

chmod a+x /home/remix
Michael Hampton
fuente
Ya veo: drwxrwxr-x 2 remix remix 4096 16 de agosto 09:36 / home / remix. Intenté el comando de todos modos, sin efecto.
RemiX
Ahh, no puedo ganarlos a todos.
Michael Hampton
3

Asegúrese de que el usuario que ejecuta el httpdservicio tenga acceso a estos directorios.

cpt.Buggy
fuente
No estoy seguro de quién es el usuario de httpd o cómo verificarlo, pero todos pueden leer (usuario / grupo / otro).
RemiX
Verifique httpd.conf para el Userparámetro.
cpt.Buggy
1
Ok, dice 'Usuario nadie' y 'Grupo nogrupo'. Intenté cambiarlo a 'User remix' (que es el propietario de la carpeta), pero incluso eso no ayudará.
RemiX
1

"cliente denegado por la configuración del servidor" significa que el servidor Linux mismo prohíbe el acceso al archivo, no a Apache.

Si proporcionar acceso mediante el cambio de permisos / propiedad / pertenencia al grupo no resuelve el problema, la causa de la ruta puede ser SELinux que prohíbe el acceso a cualquier carpeta que no tenga el contexto SE Linux apropiado como se explica en 'Reubicación de una raíz de documento de Apache en Selinux' .

  • Si deshabilita temporalmente SELinux al hacer setenforce 0que el archivo sea accesible
  • Mientras que volver a habilitar SELinux haciendo setenforce 0hace que el archivo no sea accesible

Entonces, con seguridad, SELinux prohíbe el acceso, independientemente de los permisos del archivo.

Vincent
fuente
0

Otro problema simple (pero complicado) que puede causar este problema a las personas es cuando los directorios de usuarios no están en / home / *, sino en otro lugar, por ejemplo, / nethome / *

El userdir.conf suministrado contiene algo como esto: (pero con Userdir: deshabilitado)

$ 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 especificación del directorio asume ~ user == / home / user. Simplemente cambie o agregue la especificación de Directorio para saber dónde están realmente los directorios de inicio del usuario.

¡Bastante obvio, pero me tomó un tiempo descubrirlo! :-P DUH!

por ejemplo, ~ usuario == / nethome / usuario

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

Vea también más autorización abierta en ese Directorio en general.

gaoithe
fuente