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

14

Eu estou tentando construir um RPM que as metas RHEL4 e 5. Agora eu chamo chconde %postmas várias entradas do Google dizem "isso não é como você é suposto a fazê-lo" com a ajuda muito limitado na direita caminho. Também notei que fixfiles -R mypackage checkos arquivos estão errados quando estão certos (como esperado; o banco de dados do RPM não percebe o que eu quero) ..

  • Digo especificamente o RHEL4 porque não possui o semanageque parece ser uma das maneiras adequadas de fazê-lo. (Adicione uma nova política e execute restoreconnos diretórios em %post.)

    • Também não preciso do meu próprio contexto, apenas httpd_cache_tem um diretório não padrão.
  • Também vi "vamos cpiocuidar disso" - mas tenho um novo problema que um usuário de construção do RPM não raiz não pode executar chconnos diretórios de construção. Eu trapacei e tinha sudono arquivo de especificações, mas isso não parecia importar de qualquer maneira.

Aaron D. Marasco
fonte

Respostas:

9

As Diretrizes de Empacotamento do Fedora têm um rascunho de documento explicando como lidar com o SELinux em pacotes, e eles o usam semanage. Sem semanage, parece que o suporte ao RHEL 4 será um hack, e não há maneira de contornar isso.

De acordo com as notas de versão do rpm 4.9.0 , houve algum suporte diretamente no rpm para gerenciar políticas do SELinux, mas historicamente foi quebrado:

  • As versões mais antigas do RPM suportavam uma diretiva% policy nas especificações para anexar políticas SELinux ao cabeçalho do pacote, mas isso nunca foi realmente útil para nada. Quaisquer usos da diretiva% policy nas especificações devem ser removidos, pois essa diretiva não utilizada impede a criação com o RPM 4.9.0 e posterior, sem fazer nada para versões mais antigas.
  • A partir do RPM 4.9.0, o pacote de políticas do SELinux é suportado pela nova seção% sepolicy na especificação. Esses pacotes não podem ser criados, mas também são instaláveis ​​em versões mais antigas do RPM (mas as políticas incluídas não serão usadas de forma alguma).

Não vejo menção de contextos de arquivo lá e não consegui encontrar nenhuma menção ao suporte direto ao contexto de arquivo (como %attrna %filesseção). De qualquer forma, parece que o RHEL 6 está apenas na rpm 4.8.0, portanto (a menos que eu tenha perdido alguma coisa) a semanagerota é tão boa quanto poderemos fazer pelo menos até o RHEL 7.

Steven Pritchard
fonte