Apache: acceso denegado porque faltan permisos de búsqueda

75

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/envvarssiguiente 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-datapertenece al grupo public.

Ahora, cuando busco http://localhost/moviesme 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/envvarsejecutar 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.

Yotam
fuente
Hice todo lo que sugirieron allí, como escribí, y no ayuda
Yotam
¿Alguna posibilidad de que haya montado /homecon ACL habilitado? (hay un signo "+" al final de los bits de permiso si es el caso (verifique con ls -l))
Polosson
No, no lo hice. En este momento estoy ejecutando Apache con mi usuario, por lo que funciona, pero me gustaría ejecutarlo con otro usuario por razones de seguridad.
Yotam
Estoy usando Linux por primera vez. Descargué la versión Ubuntu 14.04 LTE. Estoy enfrentando el mismo problema. ¿Alguien puede ayudar por favor?
Imdad

Respuestas:

95

Haga una chmod +xen su directorio de usuario y reinicie apache. 755 permisos deberían funcionar. He tenido problemas con el 644 .

Peter
fuente
66
De hecho, y para verificar los permisos de archivos y directorios, si están disponibles, puede usar namei -m /home/youruser/public_html/yourfile.exto probar people.apache.org/~igalic/hacks/parsepath
Junior M
2
Para aclarar, cualquier directorio que desee que lea Apache debe ser legible para el usuario de Apache. Lo más probable es que su carpeta de inicio de usuario no sea propiedad de su usuario y grupo, por lo que debe establecer 755 permisos /home/usernamepara acceder a ella con rapidez.
Ruuter
Tuve este problema en OSX Mac OS High Sierra y esta solución funcionó para mí. Ni siquiera tuve que reiniciar Apache.
desaparecido el
Después de horas de búsqueda, resulta que los permisos también deberían ser correctos para los directorios principales de DocumentRoot. Muchas gracias . Por cierto, esto no necesita reiniciar Apache
Contador م
27

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:

chcon -R -t httpd_sys_content_t ~/public_html/
jozxyqk
fuente
1
Estaba seguro de que era mi problema. ¡Malditos CentOS! Gracias por el comando, funciona perfectamente.
Balmipour
2
gracias, solo tuve que reemplazar la ~/public_html/parte con el directorio raíz del contenido que estaba tratando de servir.
trpt4him
chcon -R -t httpd_sys_content_t /var/www/html/phpmyadmin/(en mi situación)
cssyphus
Descubierto selinux no puede manejar homedirs simples, y solo se requería una de esas características mientras que la otra era opcional. Gracias por el recordatorio de la solución: después del período de reevaluación obligatorio con cada nueva versión, y la decepción, por lo general solo lo pirateo en el arranque. Ahora para systemd.
user2066657
17

Es posible que tenga habilitado selinux. Tratar

getenforce

Si muestra "Cumplimiento", intente

setenforce 0

e intente si esto soluciona su problema.

Soprano
fuente
44
No solo desactive SELinux como una solución. Solucione los problemas de SELinux reasignando puertos o configurando booleanos.
siride
1
Esta respuesta ayuda a identificar que el problema está relacionado con SELinux. Pero deshabilitarlo no es recomendable.
Rajkumar R
15

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:

namei --modes /usr/local/apache2/htdocs/foo/bar.html

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ó.

Lu Sun
fuente
1
El enlace aquí es útil porque explica el problema: a uno de los nodos en la ruta del directorio le faltan permisos de búsqueda. Utilice el comando "namei" para encontrar esto y luego "chmod" a 755.
user3751385
Explica la razón real y la solución. gracias
Emdadul Sawon
1

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:

sudo apt-get install --install-recommends linux-generic-hwe-16.04 
Programador
fuente
Me he encontrado con este problema, pero con el extraño efecto que puedo chmodo chowndentro 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!
halfer