Centos Apache SELinux

Creado: Noviembre 15, 2020 - Actualizado: Octubre 8, 2022

Guía rápida de como habilitar SELinux con Apache en Centos 7/8 utilizando directorio personal y otros características.

Esto es ciertamente muy básico pero útil y practico. Tener en cuenta que hay pasos los cuales me salte dado que cualquiera leyendo esto tiene una noción básica de lo que estoy escribiendo.

Luego de instalar Apache con dnf o yum pasamos a permitir Apache con el siguiente comando:

sudo setsebool -P httpd_can_network_connect 1
sudo setsebool -P httpd_enable_homedirs 1

Si quieren saber que otras opciones existen en el contexto de httpd pueden ejecutar esta variante:

sudo getsebool -a | grep "httpd_can"

Luego procedemos a crear nuestro directorio:

mkdir public_html
chmod 0755 public_html

En el caso de que se requiera hacer operaciones de lectura/escritura debemos permitir nuestra carpeta con este otro comando:

chcon -Rv --type=httpd_sys_rw_content_t /home/usuario/public_html

En el caso de que busquemos solo lectura (servir archivos y no nos funcione nuestro public_html):

chcon -t httpd_sys_content_t /home/usuario/public_html

Creamos nuestro vhost:

sudo vim /etc/httpd/sites-available/barrahome.org.conf
<VirtualHost *:80>
    ServerName barrahome.org
    ServerAlias barrahome.org www.barrahome.org
    DocumentRoot /home/usuario/public_html
    ErrorLog /home/usuario/logs/error.log
    CustomLog /home/usuario/logs/custom.log combined
</VirtualHost>
sudo ln -s /etc/httpd/sites-available/barrahome.org.conf /etc/httpd/sites-enabled/barrahome.org.conf

Ahora permitiremos a Apache la escritura de logs en nuestro directorio personal:

sudo semanage fcontext -a -t httpd_log_t "/home/usuario/logs(/.*)?"

Para finalizar aplicamos los cambios:

sudo restorecon -R -v /home/usuario/public_html
sudo restorecon -R -v /home/usuario/logs

Artículos relacionados