Configuración CentOS Apache HTTPD (403 prohibido)

8

Esto es lo que tengo en mi httpd.conf

<VirtualHost *:80>
        ServerAdmin [email protected]
        ServerName mcmoddr.com
        ServerAlias www.mcmoddr.com
        DocumentRoot /home/mcmoddr/www/
        ErrorLog /mcmoddr/logs/error.log
        CustomLog /mcmoddr/logs/accesslog combined
</VirtualHost>

Al visitar el sitio, aparece un error prohibido 403, los archivos se agregan con vsftpd y tienen los permisos drwxr-xr-x

Patt-tom McDonnell
fuente

Respuestas:

12

Está utilizando una instalación estándar de CentOS, si eso es correcto, verifique si SELinux está en modo de aplicación

getenforce

si el resultado es "Hacer cumplir"

cambiarlo temporalmente a permisivo

setenforce 0

e intente nuevamente, también puede guiar la condición del contenido web a los archivos en su directorio de inicio.

Freaktor
fuente
Esto hizo el truco en mi caso. Pero si posteriormente reforzo nuevamente (con setenforce 1 ) el error 403 ya no aparece, aunque la configuración es la misma que antes, cuando solía aparecer.
damix911
Esto no es más que un truco sucio. Ciertamente no es la forma correcta de simplemente deshabilitar las funciones de seguridad. Debería configurarlos en su lugar.
El tonto
9

Deshabilitar SELinux o ejecutar en ROOT

setsebool -P httpd_enable_homedirs on
chcon -R -t httpd_sys_content_t /home/
chcon -R -t httpd_sys_rw_content_t /home/
IgoRRius
fuente
5

La respuesta de Freaktor de 'setenforce 0' me "funcionó" (¡gracias!)

Pero para mantenerlo funcionando y volver a habilitar SELinux, necesitaba

sudo chcon -Rv --type=httpd_t /path/to/my/files

... esto le dio a mi directorio y a todos los archivos y directorios dentro de él el contexto de seguridad de "httpd_t", que es una forma torpe de decir que SELinux deja que httpd lea esos archivos.

habilitar selinux nuevamente fue tan simple como

setenforce 1
jg3
fuente
2
Esto es solo temporal; cualquier archivo nuevo que haga tendrá su contexto original y SELinux aún denegará el acceso a los nuevos archivos. Para una solución permanente, vea esta respuesta .
Michael Hampton
3

Probablemente tenga una denegación de todo en alguna parte de la configuración global. Intente agregar esto a la estrofa vhost:

<Directory /home/mcmoddr/www>
  Order allow,deny
  Allow from all
</Directory>
Alex Howansky
fuente
+1, también @ Spero78 debería asegurarse de que no haya un archivo .htaccess en la raíz de su
0

necesita usar el <Directory>contenedor como se mencionó anteriormente.

Y luego debe verificar desde su DocumentRootruta, cada directorio debe tener permiso de lectura para que el usuario del servicio apache pueda acceder.

puedes verificar usando ls -ld

usuario533968
fuente
-1

Agregue la línea a continuación en su código existente.

restorecon -r /home/mcmoddr/www/

Debería solucionar su problema.

Niranjay singh
fuente