Diagnose and address routine SELinux policy violations:
Primeiramente temos de perceber que para obtermos as ferramentas necessárias para a gestão de erros relacionadas com o SELinux, temos de ter instalado no nosso sistema o já anteriormente referido pacote “setroubleshoot-server
”. Uma vez instalado, temos ao nosso dispor utilitários como semanage
, sealert
e audit2why
, entre outros, que vão nos permitir mais facilmente compreender os erros com que nos deparamos.
Podemos inicialmente usar o sealert
para nos devolver as mais recentes violações de políticas que ocorreram no sistema, filtrando os logs do SELinux existentes em /var/log/audit/audit.log:
# sealert -a /var/log/audit/audit.log
Este comando vai nos devolver todas as mais recentes violações, onde cada uma estará identificada pelo seu ID, e caso seja dado um AVC-Access Vector Cache, podemos enviar o mesmo para o utilitário audit2why
onde esta vai interpretar o mesmo e devolver-nos um mais vasto grupo de informações sobre o porque do erro e possíveis soluções para resolvermos o mesmo.
# grep [AVC] /var/log/audit/audit.log | audit2why
Por exemplo vamos verificar um sistema em que ao mostrar-mos as mais recentes violações, deparamos-nos com a seguinte:
# sealert -a /var/log/audit/audit.log
**** Invalid AVC allowed in current policy ***
28% donetype=AVC msg=audit(1545140366.396:269): avc: denied { write } for pid=5707
comm="sss_cache" name="db" dev="dm-0" ino=928467
scontext=unconfined_u:unconfined_r:groupadd_t:s0-s0:c0.c1023
tcontext=system_u:object_r:sssd_var_lib_t:s0 tclass=dir permissive=0
Sendo assim, para melhor percebermos como a resolver, podemos pegar no seu identificador (neste caso é 1545140366.396:269), e enviar para o audit2why
:
# grep 1545140366.396:269 /var/log/audit/audit.log | audit2why
type=AVC msg=audit(1545140366.396:269): avc: denied { write }
for pid=5707 comm="sss_cache" name="db" dev="dm-0" ino=928467
scontext=unconfined_u:unconfined_r:groupadd_t:s0-s0:c0.c1023
tcontext=system_u:object_r:sssd_var_lib_t:s0 tclass=dir permissive=0
Was caused by:
Unknown - would be allowed by active policy
Possible mismatch between this policy and the one under which the audit message was generated.
Possible mismatch between current in-memory boolean settings vs. permanent ones.
Deste modo, temos uma mais fácil interpretação do erro em mãos, onde apesar de neste exemplo não ser mostrado uma possível solução em código é explicado a possível origem do erro.
Last updated
Was this helpful?