A maneira de lidar com isso é coletar todas as informações sobre o acesso que o programa precisa e, em seguida, permitir explicitamente apenas esse acesso em um módulo de política personalizado.
Isso é bastante fácil de fazer.
Primeiro, você defina o domínio permissivo , para que o SELinux temporariamente não imponha suas regras. Ele ainda registrará as negações e, posteriormente, você usará esses registros.
semanage permissive -a zabbix_agent_t
Em seguida, deixe o programa rodar e deixe-o fazer o que for necessário. O log de auditoria preencherá o que seria negado, e esses registros também mostrarão quais permissões precisarão ser concedidas. Em seguida, veja esses registros com ausearch
.
ausearch -r -m avc -ts today
Nós gere um módulo de política local contendo as permissões necessárias. (Você precisa usar a opção -r
com ausearch
aqui para que a saída possa ser processada por outros scripts.)
Se você viu entradas claramente irrelevantes, redirecione a saída para um arquivo e edite-a para removê-las. Em seguida, use o arquivo aqui.
ausearch -r -m avc -ts today | audit2allow -M zabbix_megacli
Finalmente, instalamos nosso novo módulo de política local e reativamos a aplicação do SELinux.
semodule -i zabbix_megacli.pp
semanage permissive -d zabbix_agent_t