Hoy voy a intentar configurar el directorio de usuarios en el servidor Apache. Encontré un problema difícil. El proceso de configuración, los problemas y sus soluciones se resumen a continuación:
1. Configuración convencional:
Añadir web de usuario:
agregar usuario web
contraseña web
Cree el directorio public_html en el directorio de usuarios web y establezca los permisos en 755:
mkdir public_html
chmod 755 public_html-R
Modifique /etc/http/httpd.conf:
#
# UserDir: el nombre del directorio que se agrega a la página de inicio de un usuario.
# directorio si se recibe una solicitud de ~usuario.
#
# La ruta al directorio 'public_html' de la cuenta del usuario final debe ser
# accesible para el ID de usuario del servidor web. Esto generalmente significa que ~ID de usuario.
# debe tener permisos de 711, ~userid/public_html debe tener permisos
# de 755, y los documentos contenidos en él deben ser legibles en todo el mundo.
# De lo contrario, el cliente solo recibirá un mensaje "403 Prohibido".
#
# Ver también: http://httpd.apache.org/docs/misc/FAQ.html#forbidden
#
<IfModule mod_userdir.c>
#
# UserDir está deshabilitado de forma predeterminada ya que puede confirmar la presencia
# de un nombre de usuario en el sistema (dependiendo del directorio de inicio
# permisos).
#
#UserDir deshabilitar
#
# Para permitir solicitudes a /~user/ para servir el public_html del usuario
# directorio, elimine la línea "UserDir deshabilitar" de arriba y descomente
# la siguiente línea en su lugar:
#
DirUsuario public_html
</IfModule>
2. Se producen pruebas y problemas:
http://127.0.0.1/~web
===============================
Prohibido
No tienes permiso para acceder a /~web en este servidor.
Además, se encontró un error 403 Prohibido al intentar utilizar un ErrorDocument para manejar la solicitud.
-------------------------------------------------- ----------------------------------
Servidor Apache/2.0.54 (Fedora) en 127.0.0.1 Puerto 80
Generalmente cuando ocurre este problema, el problema que me viene a la mente es el permiso de acceso al directorio. Después de mucho tiempo de verificación y ajuste, el problema no se ha solucionado. Durante este período, pensé si era un problema con Selinux. Entré y miré a mi alrededor, pero no encontré nada que cambiar. (Hechos posteriores demuestran que a veces la intuición es muy precisa. La diferencia entre si puedes encontrar la respuesta es a menudo si profundizas en la intuición).
3. Solución al problema Después de buscar Apache 403 en Google durante mucho tiempo, finalmente vi en un blog que el autor encontró exactamente el mismo problema que yo: la configuración de Apache y el directorio estaban bien, pero la página no. no se mostrará. La solución es modificar el control de acceso de Selinux a public_html.
Utilice el siguiente comando para modificar los atributos de seguridad de la carpeta
chcon -R -t httpd_user_content_t public_html/
4. Resumen de conocimientos relacionados:
Preguntas frecuentes sobre Fedora Core 5 SELinux
http://fedora.redhat.com/docs/selinux-faq-fc5/#faq-entry-public_html P: ¿Cómo hago para que un directorio public_html de usuario funcione en SELinux?
R: Este proceso supone que ha habilitado los directorios HTML públicos de usuario en su archivo de configuración de Apache, /etc/httpd/conf/httpd.conf. Este proceso solo cubre el servicio de contenido web estático. Para obtener más información sobre Apache HTTP y SELinux. http://fedora.redhat.com/docs/selinux-apache-fc3/.
Si aún no tiene un directorio ~/public_html, créelo y rellénelo con los archivos y carpetas que se entregarán.
cd ~mkdir public_htmlcp /ruta/al/contenido ~/public_html
En este punto, httpd está configurado para servir el contenido, pero aún recibe un error 403 prohibido. Esto se debe a que httpd no puede leer el tipo de seguridad para el directorio y los archivos tal como se crean en el directorio de inicio del usuario. contexto de seguridad de la carpeta y su contenido de forma recursiva usando la opción -R:
ls -Z -d public_html/drwxrwxr-x auser auser user_u:object_r:user_home_t public_htmlchcon -R -t httpd_user_content_t public_html/ls -Z -d public_html/drwxrwxr-x auser auser user_u:object_r:httpd_user_content_t public_html/ls -Z public_html/- rw-rw-r-- auser auser user_u:object_r:httpd_user_content_t bar.html-rw-rw-r-- auser auser user_u:object_r:httpd_user_content_t baz.html-rw-rw-r-- auser auser user_u:object_r:httpd_user_content_t foo.html
Es posible que observe más adelante que el campo de usuario, establecido aquí en user_u, se cambia a system_u. Esto no afecta el funcionamiento de la política de destino. El campo que importa es el campo de tipo.
Sus páginas web estáticas ahora deberían publicarse correctamente. Si continúa teniendo errores, asegúrese de que el booleano que habilita los directorios de inicio de los usuarios esté habilitado. Puede configurarlo usando system-config-securitylevel. Seleccione la pestaña SELinux y luego seleccione Modificar SELinux. Área de política. Seleccione Permitir que HTTPD lea los directorios de inicio. Los cambios surten efecto inmediatamente.
Análisis de los comandos utilizados:
ls -Z -d public_html/
#Mostrar el contexto de seguridad del archivo/directorio -Z, --context
Muestra el contexto de seguridad para que se ajuste a la mayoría de las pantallas. Muestra solo el modo, usuario, grupo, contexto de seguridad y nombre de archivo.-d, --directory.
enumere las entradas del directorio en lugar de los contenidos y no elimine la referencia a enlaces simbólicos
chcon -R -t httpd_user_content_t public_html/
#Modificar el contexto de seguridad de archivos/directorios -R, --recursivo
cambiar archivos y directorios de forma recursiva-t, --type
establecer el tipo TYPE en el contexto de seguridad de destino