Se você filtrar os registros de auditoria por meio de audit2allow(1)
e audit2why
, terá uma ideia aproximada do que está acontecendo:
#============= slapd_t ==============
allow slapd_t self:capability sys_nice;
allow slapd_t var_log_t:file { write read };
------------------------------------
Was caused by:
Missing type enforcement (TE) allow rule.
You can use audit2allow to generate a loadable module to allow this access.
type=AVC msg=audit(1372888328.408:3263): avc: denied { sys_nice } for pid=1492 comm=slapd capability=23 scontext=unconfined_u:system_r:slapd_t:s0 tcontext=unconfined_u:system_r:slapd_t:s0 tclass=capability
Was caused by:
Missing type enforcement (TE) allow rule.
You can use audit2allow to generate a loadable module to allow this access.
type=AVC msg=audit(1372888328.424:3264): avc: denied { read } for pid=1493 comm=slapd name=log.0000000001 dev=dm-0 ino=263969 scontext=unconfined_u:system_r:slapd_t:s0 tcontext=unconfined_u:object_r:var_log_t:s0 tclass=file
Was caused by:
Missing type enforcement (TE) allow rule.
You can use audit2allow to generate a loadable module to allow this access.
Verificação da rotulagem
É improvável que uma restauração de rótulo impeça que você inicie um serviço se o SELinux estiver em modo permissivo . Além disso, por que a opção -F
?
Para saber se você precisa restaurar a rotulagem de um diretório ou arquivo, primeiro descubra o contexto que um arquivo ou diretório deve ter:
# matchpathcon /etc/openldap/
/etc/openldap system_u:object_r:etc_t:s0
Em seguida, liste seu contexto de segurança:
# ls -ldZ /etc/openldap/
drwxr-xr-x. root root system_u:object_r:etc_t:s0 /etc/openldap//
Neste exemplo, nenhuma ação adicional é necessária.
Com relação ao seu problema, o problema não é rotular per se , mas uma regra type enforcement
ausente, ou seja, uma regra que permite que um processo rotulado seja transição de um domínio confinado para outro, ou para ler arquivos com um rótulo específico, por exemplo.
Criando um módulo SELinux
Você pode tentar criar um módulo que permita que o slapd_t
realize as operações que apareceram no audit.log
. É provável que você precise de mais ajustes no seu código. Use audit2allow
e make
para esta tarefa. Todos os comandos estão bem documentados em suas respectivas páginas de manual. O processo será mais ou menos assim (depois de copiar as mensagens relevantes em audit.txt
):
audit2allow -i audit.txt -m slapd -o slapd.te
make -f /usr/share/selinux/devel/Makefile load
Além disso, verifique se já existe um relatório de erros para a política do SELinux referente a este problema.