Qual é a maneira correta de definir o contexto do SELinux em um RPM .spec? (RHEL7 em 2018)

6

O pacote tomcat fornecido pelo RHEL7 suporta várias instâncias através da criação de diretórios e links simbólicos. Uma vez que essa instância múltipla é criada e empacotada como um RPM, as instâncias extras falham ao iniciar devido a falhas do selinux.

A solução é configurar o selinux corretamente no pacote RPM, no entanto estou lutando para encontrar uma descrição canônica de como fazer isso.

De onde vem a configuração do selinux quando o tomcat é instalado no RHEL7?

Editar: a pergunta em

    
por Graham Leggett 14.09.2018 / 22:29

1 resposta

3

A configuração do SELinux é fornecida por selinux-policy-targeted package, que contém a configuração de política padrão para a distribuição, incluindo a configuração do SELinux para o tomcat.

Eu poderia encontrar dois esboços de empacotamento antigos do Fedora descrevendo a configuração do SELinux no pacote RPM.

PackagingDrafts / SELinux sugere a inclusão da configuração de rotulagem de arquivo nas seções %post e %postun do arquivo de especificação por executando semanage fcontext -a e semanage fcontext -d respectivamente e executando restorecon / fixfiles depois.

É útil observar, conforme apontado por , que usando semanage em %pre ou %post seções de especificação adicionará a pilha python completa junto com policycoreutils-python como dependência de tempo de instalação. Usar restorecon adicionará policycoreutils , o que, por sua vez, gera sed , gawk e grep , como dependências de tempo de instalação.

Uma maneira melhor de fornecer as regras de rotulagem de arquivo requeridas seria por um módulo de política do SELinux. Os módulos de política fornecem uma interface mais clara para gerenciar a política modular (as regras de rotulagem não são misturadas com modificações locais feitas com semanage ).

Para seu módulo de política com regras de rotulagem de arquivo, você precisa fornecer um arquivo de rotulagem de contexto de arquivo e arquivo de imposição de tipo. O arquivo de imposição de tipo é obrigatório mesmo se você não adicionar nenhuma modificação à política. Um exemplo de arquivo de imposição de tipo fictício mymodule.te :

policy_module(mymodule, 1.0)

As regras de rotulagem de arquivos estão em mymodule.fc e seguem as mesmas:

/path/to/file   --  gen_context(system_u:object_r:type_t,s0)

Com selinux-policy-devel , o pacote do módulo pode ser compilado com [nota 1] :

make -f /usr/share/selinux/devel/Makefile

Em relação aos módulos de política de empacotamento, Módulo de Política do SELinux Embalagem também recomenda o uso das seções %post e %postun do arquivo de especificação para instalar a política usando semodule e restorecon / fixfiles . Um arquivo de especificação de exemplo também é fornecido.

[note 1] O exemplo de módulo de política pode ser gerado sem selinux-policy-devel usando checkmodule e semodule_package diretamente. Isso exigiria que os arquivos de políticas fossem gravados sem macros.

    
por 17.09.2018 / 19:50