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.
Para cualquier persona que tenga problemas después de actualizar a 14.04 https://askubuntu.com/questions/452042/why-is-my-apache-not-working-after-upgrading-to-ubuntu-14-04 como raíz modificada antes de la actualización = / var / www después de la actualización = / var / www / html
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.