====== HTTP (SELinux) ====== Estas configurações servem para os serviços **Apache** e **Nginx**. ===== Contextos HTTP ===== O SELinux possui 3 tipos de contexto para o SELinux: * **httpd_sys_content_t**: O agente HTTP só possui permissão de leitura em arquivos sob este contexto. * **httpd_sys_rw_content_t**: O agente HTTP pode ler e escrever em arquivos sob este contexto. * **httpd_sys_script_exec_t**: O agente HTTP pode executar arquivos de script. Para mudar o contexto para ** somente leitura** no HTTP utilizamos este comando: # chcon -R -t httpd_sys_content_t [diretório] # semanage fcontext -a -t httpd_sys_content_t "[diretório]/(/.*)?" Para mudar o contexto para **leitura e escrita** no HTTP utilizamos este comando: # chcon -R -t httpd_sys_rw_content_t [diretório] # semanage fcontext -a -t httpd_sys_rw_content_t "[diretório]/(/.*)?" Para mudar o contexto do usuário para um diretório recursivamente: # chcon -R -u system_u [diretório] **Obs.:** O comando ''semanage fcontext'' garante o contexto do diretório mesmo após um **restorecon** **Obs2.:** Note que no comando ''semanage fcontext'' é utilizado uma **expressão regular** contendo a string do caminho do diretório para garantir que os arquivos dentro daquele diretório também adquiram o mesmo contexto. Procure utilizar o **caminho absoluto** ao invés do caminho relativo. ===== Booleanos SELinux para HTTP ===== ==== Permissão a arquivos em storage via NFS ==== # setsebool -P httpd_use_nfs on Talvez seja necessário montar o compartilhamento NFS com um certo contexto. Para isso basta colocar o contexto (''context'') desejado nas opções de montagem do ''/etc/fstab'' como mostrado na linha abaixo: 10.199.X.Y:/MEU_FS /meu/path nfs4 rw,soft,intr,rsize=8192,wsize=8192,nosuid,noexec,context="system_u:object_r:httpd_sys_rw_content_t:s0" 0 0 ==== Permitir envio de e-mail via Web ==== # setsebool -P httpd_can_sendmail on ==== Permitir conexão a banco via rede ==== # setsebool -P httpd_can_network_connect_db on ==== Conheça mais permissões SELinux para HTTP ==== ==== Liste os serviços ==== # getsebool -a | grep [nome do serviço] Exemplo: # getsebool -a | grep httpd ==== Liberando permissão ==== # setsebool [definição da permissão listada com o getsebool -a | grep] 1 ==== Revogando permissão ==== # setsebool [definição da permissão listada com o getsebool -a | grep] 0