symbolic link htaccess forbidden followsymlinks apache configuration apache2 symlink

link - Apache no seguirá enlaces simbólicos(403 prohibido)



options+followsymlinks htaccess (7)

Compruebe que Apache tiene derechos de ejecución para /root , /root/site y /root/site/about .

Correr:

chmod o+x /root /root/site /root/site/about

Tengo problemas para configurar Apache en Ubuntu. He estado siguiendo esta guía .

# /usr/sbin/apache2 -v Server version: Apache/2.2.17 (Ubuntu) Server built: Feb 22 2011 18:33:02

Mi directorio público, / var / www, puede servir con éxito y ejecutar las páginas PHP que se colocan en él. Sin embargo, quiero crear un enlace simbólico en / var / www que apunte a un directorio en mi carpeta de inicio y sirva páginas allí.

[root /var/www]# ll total 36 drwxr-xr-x 3 root root 4096 2011-09-11 14:22 . drwxr-xr-x 14 root root 4096 2011-06-04 22:49 .. lrwxrwxrwx 1 root root 16 2011-09-11 13:21 about -> /root/site/about

Cuando intento acceder / sobre el navegador, obtengo

Forbidden You don''t have permission to access /about on this server.

Hasta donde yo sé, di suficientes privilegios a los archivos que deseo servir:

[root ~/site/about]# ll total 24 drwxr-xr-x 5 root root 4096 2011-09-11 13:20 . drwxr--r-- 3 root root 4096 2011-09-11 13:19 .. drwxr-xr-x 2 root root 4096 2011-09-11 13:21 contact -rwxr-xr-x 1 root root 1090 2011-09-11 13:19 index.php drwxr-xr-x 2 root root 4096 2011-09-11 13:20 me drwxr-xr-x 2 root root 4096 2011-09-11 13:21 resume

Conozco la opción FollowSymLinks y creo que está configurada en mi archivo / etc / apache2 / sites-enabled / 000-default:

DocumentRoot /var/www <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options FollowSymLinks Indexes MultiViews AllowOverride None Order allow,deny allow from all </Directory>

¿Alguna idea de lo que podría estar perdiendo?


El error 403 también puede ser causado por un sistema de archivos cifrado, por ejemplo, un enlace simbólico a una carpeta de inicio encriptada .

Si su enlace simbólico apunta a la carpeta cifrada, el usuario de apache (por ejemplo, www-data) no puede acceder a los contenidos, incluso si los permisos de apache y de archivo / carpeta están configurados correctamente. El acceso del usuario de www-data puede probarse con dicha llamada:

sudo -u www-data ls -l /var/www/html/<your symlink>/

Hay soluciones / soluciones para esto, por ejemplo, agregar el usuario de www-data a su grupo privado (expone los datos encriptados al usuario web) o configurando una carpeta rsynced sin encriptar (probablemente bastante segura). Yo mismo probablemente buscaré una solución rsync durante el desarrollo.

https://askubuntu.com/questions/633625/public-folder-in-an-encrypted-home-directory

Una herramienta conveniente para mis propósitos es lsyncd . Esto me permite trabajar directamente en mi carpeta de inicio encriptada y poder ver los cambios casi al instante en la página web de apache. La sincronización se desencadena por cambios en el sistema de archivos, llamando a una rsync. Como solo estoy trabajando en páginas web y scripts bastante pequeños, la sincronización es muy rápida. Decidí usar un pequeño retraso de 1 segundo antes de que se inicie rsync, aunque es posible establecer un retraso de 0 segundos .

Instalando lsyncd (en Ubuntu):

sudo apt-get install lsyncd

Iniciando el servicio de fondo:

lsyncd -delay 1 -rsync /home/<me>/<work folder>/ /var/www/html/<web folder>/


Estaba teniendo un problema similar que no pude resolver durante mucho tiempo en mi nuevo servidor. Además de la respuesta de Palacsint, una buena pregunta es: ¿estás usando Apache 2.4? En Apache 2.4 hay un mecanismo diferente para configurar los permisos que no funcionan cuando se hace usando la configuración anterior, así que utilicé la solución explicada en esta publicación de blog .

Básicamente, lo que tenía que hacer era convertir mi archivo de configuración de:

Alias /demo /usr/demo/html <Directory "/usr/demo/html"> Options FollowSymLinks AllowOverride None Order allow,deny allow from all </Directory>

a:

Alias /demo /usr/demo/html <Directory "/usr/demo/html"> Options FollowSymLinks AllowOverride None Require all granted </Directory>

Observe cómo las líneas Orden y permitir han sido reemplazadas por Requerir todo otorgado


Hay otra forma en que los enlaces simbólicos pueden fallar, como descubrí en mi situación. Si tiene un sistema SELinux, ya que el servidor y los enlaces simbólicos apuntan a una carpeta montada en NFS (otros sistemas de archivos pueden producir síntomas similares), httpd puede ver los contextos incorrectos y rechazar el contenido de las carpetas de destino.

En mi caso, el contexto SELinux de /var/www/html (que puedes obtener con ls -Z ) es unconfined_u:object_r:httpd_sys_content_t:s0 . Los enlaces simbólicos en /var/www/html tendrán el mismo contexto, pero el contexto de su destino, al ser una carpeta montada en NFS, es system_u:object_r:nfs_t:s0 .

La solución es agregar fscontext=unconfined_u:object_r:httpd_sys_content_t:s0 a las opciones de mount (por ej # mount -t nfs -o v3,fscontext=unconfined_u:object_r:httpd_sys_content_t:s0 <IP address>:/<server path> /<mount point> ). rootcontext es irrelevante y defcontext es rechazado por NFS. No intenté el context por sí mismo.



Primero deshabilita selinux (vim / etc / selinux / config)

vim /etc/httpd/conf/httpd.conf edita las siguientes líneas para enlaces simbólicos e indexación de directorios:

documentroot /var/www/html <directory /var/www/html> Options Indexes FollowSymLinks AllowOverride None </directory>

Si .htaccess file then AllowOverride all


Relacionado con esta pregunta, descubrí por qué mi vhost me estaba dando ese 403.

Había probado TODAS las posibilidades en esta pregunta y otras sin suerte. Casi me vuelve loco.

Estoy configurando un servidor con una implementación de lanzamientos similar al de Capistrano a través de enlaces simbólicos y cuando intenté acceder a la carpeta DocRoot (que ahora es un enlace simbólico a la carpeta de lanzamiento actual) me dio el 403.

Mi vhost es:

DocumentRoot /var/www/site.com/html <Directory /var/www/site.com/html> AllowOverride All Options +FollowSymLinks Require all granted </Directory>

y mi archivo httpd.conf principal era (instalación predeterminada de Apache 2.4):

DocumentRoot "/var/www" <Directory "/var/www"> Options -Indexes -FollowSymLinks -Includes (...)

Resulta que la definición de las Opciones principales estaba teniendo prioridad sobre mi campo de vhosts (para mí eso es contra intuitivo). Así que lo cambié a:

DocumentRoot "/var/www" <Directory "/var/www"> Options -Indexes +FollowSymLinks -Includes (...)

y Eureka! (tenga en cuenta el signo más antes de FollowSymLinks en el archivo PRINCIPAL httpd.conf. Espero que esto ayude a algún otro alma perdida.