Tengo una nueva instalación de CentOS 6, que tiene un enlace simbólico en la raíz del documento a mis archivos de desarrollo:
[[email protected] html]# ls -l
total 4
-rwxrwxrwx. 1 root root 0 Sep 18 20:16 index.html
-rwxrwxrwx. 1 root root 17 Sep 18 20:16 index.php
lrwxrwxrwx. 1 root root 24 Sep 18 20:19 refresh-app -> /home/billy/refresh-app/
Mi httpd.conf tiene esto:
<Directory "/">
Options All
AllowOverride None
Order allow,deny
Allow from all
</directory>
El objetivo del enlace simbólico tiene permisos que deberían permitir que apache lea todo lo que quiera:
[[email protected] billy]# ls -l
total 40 (Some entries were omitted because the list was too long
drwxr-xr-x. 7 billy billy 4096 Sep 18 20:03 refresh-app
También intenté deshabilitar SELinux cambiando /etc/selinux/conf
:
SELINUX=disabled
Sin embargo, no importa lo que haga, cuando alguien intenta ir a ese enlace, http://localhost/refresh-app/
, obtengo una página de error 403 PROHIBIDO y esto está escrito en el /var/log/httpd/error_log
:
Symbolic link not allowed or link target not accessible
¿Por qué Apache no puede acceder al destino del enlace simbólico?
Respuesta aceptada:
Encontré el problema. Resulta que Apache quiere acceder no solo al directorio que estoy sirviendo, /home/billy/refresh-app/
, pero también todos los directorios por encima de eso, a saber, /home/billy/
, /home
y /
. (No tengo idea de por qué... dar acceso a alguien a un subdirectorio no debería requerir otorgar permisos a todo lo que está por encima de ese subdirectorio...)
Supongo que está buscando .htaccess
o algo así, o tal vez *nix es extraño acerca de cómo trata los permisos para el directorio transversal.