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:
[root@localhost 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 lo que quiera:
[root@localhost 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 he intentado deshabilitar SELinux cambiando /etc/selinux/conf
:
SELINUX=disabled
Sin embargo, no importa lo que haga, cuando alguien intente ir a ese enlace, http://localhost/refresh-app/
recibo una página de error 403 PROHIBIDO y esto está escrito en /var/log/httpd/error_log
:
Symbolic link not allowed or link target not accessible
¿Por qué no puede Apache acceder al destino del enlace simbólico?
centos
permissions
apache-httpd
Billy ONeal
fuente
fuente
Respuestas:
Encontró el problema. Resulta que Apache quiere acceder no solo al directorio en el que estoy sirviendo
/home/billy/refresh-app/
, sino también a todos los directorios que se encuentran arriba, a saber/home/billy/
,/home
y/
. (No tengo idea de por qué ... otorgarle a alguien acceso 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 sea extraño sobre cómo trata los permisos para el directorio transversal.fuente
/
... casi nunca) Los sistemas con ACL generalmente tienen una opción transversal de directorio separada. Pensarías después de 30 años desde que se diseñó Unix, y la amplia disponibilidad de sistemas ACL, que las ACL serían el estándar. : suspiro:Tuve un problema similar en el que tenía la siguiente configuración que solía funcionar con Ubuntu 10, pero dejó de funcionar con Ubuntu 14 (Apache 2.4):
Cambiar a esto solucionó el problema (aunque el usuario del servidor web no pudo acceder directamente al enlace simbólico)
Por lo que puedo decir es solo el
-SymLinksIfOwnerMatch
configuración y tiene algo que ver con los cambios en Apache 2.4, pero no he intentado investigar la causa exacta.También pensé que podría deberse a
openbase_dir
restricciones en PHP, pero no fue eso.fuente
Este error también puede ser causado si está vinculando a una carpeta encriptada.
fuente
Parece que "FollowSymLinks" es la opción que necesita en httpd.conf. Se detalla aquí . Parece que también podrías necesitar una regla en htdocs ... pero es la opción que necesitas.
fuente
Options All
-FollowSymLinks
ya está especificado.También es posible que desee verificar si selinux se aplica o no. En RedHat / Fedora, ejecute esto:
Si la respuesta es 'Ejecución', es posible que desee ejecutar
e intente la url nuevamente en su navegador.
Tenga en cuenta que no estoy diciendo que deshabilitar selinux es la mejor manera de resolver este problema, pero puede ayudar a identificar la causa.
fuente
Crear un archivo .htaccess con esto me ayudó (póngalo en un directorio antes del enlace simbólico).
fuente
/var/www
un enlace simbólico a otro enlace simbólico intermedio. Si debe utilizar enlaces simbólicos, conviértalo en un enlace simbólico DIRECTO a su destino.eso es lo que resuelve mi problema después de permitir todos los permisos y permitir el enlace de seguimiento "En el caso de FollowSymLinks específicamente, DEBE estar dentro de una estructura de Directorio dentro de un archivo .conf. Del manual actual de Apache
responde desde aquí
fuente
Mi solución fue crear una carpeta compartida para todos los repositorios nombrados
/home/repo
.Luego enlace simbólico desde mi propia casa como:
ln -s /home/repo ~/Code
entonces~/Code/www.xxxx.com/public
apunta a/home/repo/www.xxxx.com/public
y también un enlace a
/var/www/html
puntos raíz web de apache para/home/repo/www.xxxx.com/public
Lo encontré aquí: https://github.com/alghanmi/ubuntu-desktop_setup/wiki/Git-Local-Repository-Setup-Guide
Con algunos enlaces simbólicos + acrobacia de grupos de usuarios puede implementar múltiples usuarios / versiones.
fuente
@Billey ONeil @Flion No pude responder en línea (recuento bajo de repeticiones)
Aquí tenía que hacer:
( nota: alias ll = 'ls $ LS_OPTIONS -lh')
Ahora mire cada directorio en el enlace fuente
El directorio / home / DATA es el culpable.
Solucionalo con esto:
La solución es inmediata: no es necesario reiniciar Apache.
fuente
También puede ajustar la configuración de SELinux, y setenforce puede no estar en su camino. Así que prueba esto:
y hacer que esto persista entre reinicios
fuente