Nuestro archivo fue creado en el directorio /tmp como el nombre de prueba. Esto se puede observar en la imagen.
2. Ahora lo que haremos es mover el archivo prueba del directorio donde fue creado al directorio donde se alojan los sitios web de apache. Los sitios web se alojan en el directorio /var/www/html.
En la imagen podemos ver como movemos el archivo prueba al directorio de apache.
3. Verificamos los permisos que tiene nuestro archivo y ingresamos al archivo prueba con un editor de texto ya sea nano, vim, gedit, etc. En este caso lo hicimos con el editor nano. Podemos observar que los permisos están bien para que el usuario propietario lo pueda ejecutar.
5. Ahora nos dirigimos al navegar para verificar nuestro sitio, para ello ingresamos la siguiente dirección: http://localhost/prueba. donde localhost es porque nuestro servidor web está en la misma máquina o localmente y prueba porque es nuestro archivo que tiene el sitio web con el cual estamos haciendo la prueba.
Como puede ven en la imagen anterior observamos un error. Este es el error del cual les estaba hablando al principio de esta entrada. Dicho error nos dice que no se puede acceder al sitio que no tiene permisos. Esto error de igual manera nos va salir si realizamos los mismo pasos anteriores con una aplicación web descargada de internet.
Como solucionar el error anterior ?.
1. Nos dirigimos a la consola para revisar los logs y verificar cual es el error ocasionado por apache. Para ello ejecutamos el comando que se muestra en la imagen. Y podemos observar que esta denegando apache que se acceda al sitio web.
2. Luego verificamos de nuevo cuales son los permisos que tiene nuetro sitio web. Si le damos todos los permisos a archivo prueba de todos modos nos va a salir el mismo error. Ejecutamos el comando mostrado en la imagen para observar los permisos.
3. Ahora de nuevo verificamos los permisos pero esta vez le añadimos los permisos del SElinux. Y esta ocasión podemos observar algo diferente en el archivo prueba a los otros archivos. La diferencia se puede observar claramente en el contexto de SElinux, ya que es diferente al de los otros. Si miramos bien en la imagen que se muestra debajo podemos ver que el archivo prueba cuando se crea en el directorio /tmp hereda los permisos de la raíz de ese directorio y al mover el archivo prueba al directorio de apache no cambia sus permisos por los de apache y su contexto queda que con el del directorio /tmp (directorio temporal). Esto hace que cuando al acceder al archivo prueba nos sale un error.
4. Luego de saber cuál es el error o el problema por el cual nos podemos acceder al sitio web es de SElinux, instalamos un paquete el cual es un servicio que nos brinda ayuda de cómo solucionar problemas de SElinux.. El paquete a instalar lo podemos observar en la imagen y nos muestra como ejecutarlo.
5. Iniciamos el servicio que acabamos de instalar.
6. Verificamos los logs del SElinux, el cual nos muestra cual es la causa del error y nos brinda un comando para ver detalladamente la causa de error. El comando para ver detalladamente el error lo podemos observar en la imagen.
7. Ejecutamos el comando que nos dijo los logs SElinux y podemos ver detalladamente el error. Nos muestra que el contexto que tiene el archivo prueba que aloja nuestro sitio web no coincide con el que debe de ser para que apache deje acceder al sitio web y nos muestra cual es el contexto correcto para qué apache deje acceder al sitio y también nos permite saber más detalladamente el error. También nos da un comando para solucionar el problema de los contextos. Todo esto se muestra en las siguientes imágenes.8. Ejecutamos el comando arrojado en el paso anterior para solucionar este problema o el error. Este comando restaurar el contexto adecuado para nuestro archivo prueba.
10. De nuevo volvemos al navegador para acceder al sitio web prueba.
Ya esta el problema o el error solucionado correctamente, y sabemos por que ocurre este error y entender de que se trata el problema y como se soluciona.
Enlaces de interés:
http://es.wikipedia.org/wiki/SELinux
http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-es-4/ch-selinux.html