Sé que esta pregunta se hace mucho, pero las soluciones que vi no funcionaron para mí.
Solo tengo un host virtual habilitado, y estoy tratando de habilitar el acceso a una carpeta que no está debajo de la raíz del documento
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
Alias /movies /home/username/Videos/Movies
<Directory /home/username/Videos/Movies/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Establezco de la /etc/apache2/envvars
siguiente manera
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=public
Me aseguré de que / home / username / Videos / y sus subcarpetas son propiedad de username:public
, establecí los permisos en 777 (después de que 775 no funcionó) y me aseguré de que el usuario www-data
pertenece al grupo public
.
Ahora, cuando busco http://localhost/movies
me sale
[Mon Apr 21 11:28:14.971844 2014] [core:error] [pid 1385:tid 140067725104896] (13)Permission denied: [client 127.0.0.1:46603] AH00035: access to /movies/ denied (filesystem path '/home/username/Videos') because search permissions are missing on a component of the path
Pero cuando configuro /etc/apache2/envvars
ejecutar Apache con username
(mi propio nombre de usuario) todo funciona bien. El problema está relacionado con los permisos, pero no veo cómo en mi caso; especialmente cuando configuro los permisos para 777
. ¿Algunas ideas?
La versión de PS Ubuntu es 14.04, Apache es 2.4.7 y no edité otros archivos de configuración.
fuente
/home
con ACL habilitado? (hay un signo "+" al final de los bits de permiso si es el caso (verifique conls -l
))Respuestas:
Haga una
chmod +x
en su directorio de usuario y reinicie apache. 755 permisos deberían funcionar. He tenido problemas con el 644 .fuente
namei -m /home/youruser/public_html/yourfile.ext
o probar people.apache.org/~igalic/hacks/parsepath/home/username
para acceder a ella con rapidez.Si en el caso de que selinux sea el problema, en lugar de deshabilitarlo, esta página y esta página le dan el comando para otorgar acceso:
fuente
~/public_html/
parte con el directorio raíz del contenido que estaba tratando de servir.chcon -R -t httpd_sys_content_t /var/www/html/phpmyadmin/
(en mi situación)Es posible que tenga habilitado selinux. Tratar
Si muestra "Cumplimiento", intente
e intente si esto soluciona su problema.
fuente
Encontré el mismo problema, después de horas de intentarlo, encontré una solución que resuelve exactamente el problema:
https://wiki.apache.org/httpd/13PermissionDenied
Básicamente, el servidor Apache no solo requiere permisos de lectura de todos los archivos a los que sirve, sino el permiso de ejecución de todos los directorios en la ruta de su host virtual.
La utilidad namei se puede usar para ayudar a encontrar problemas de permisos enumerando los permisos a lo largo de cada componente de la ruta:
En mi caso, un directorio en mi ruta tiene el permiso 700, causa el problema. Después de cambiarlo a 701, el problema se resolvió.
fuente
Estaba experimentando este problema cuando intentaba ejecutar apache en un contenedor acoplable en un host Ubuntu 16.04 que usaba el kernel 4.4 en lugar de 4.10.
Una vez que ejecuté este comando en el host y lo volví a implementar, estaba bien:
fuente
chmod
ochown
dentro del contenedor, y suprime los errores de Apache 403 por un tiempo, solo para revertir algún tiempo después. No hay reinicio del contenedor intermedio u otro cambio sustancial que pueda ser la causa de esto, por lo que puedo decir. Como realmente estoy ejecutando 16.04, intenté instalar este binario, y mis 403 se mantienen a raya por ahora. Lo vigilaré y ¡gracias!