Estou configurando um servidor do CentOS 7 no qual o diretório /home deve estar localizado em outra partição e depois montado com o bind-mount. Então: /data/homes deve ser montado por bind em /home .
O problema é garantir que os contextos do SELinux sejam aplicados corretamente. De fato, os seguintes comandos têm resultados conflitantes:
# Applies the rules for /home to all the files
restorecon -R -v /home
# Applies the generic rules (standard files) to all the files
restorecon -R -v /data/homes
Isso está causando problemas se o sistema precisar renomear os arquivos.
Para resolver esse problema, modifiquei o arquivo de políticas /etc/selinux/targeted/contexts/files/file_contexts.homedirs copiando todas as regras também para /data/homes :
$ sed -n '/^\/home/p' /etc/selinux/targeted/contexts/files/file_contexts.homedirs \
| sed 's/^\/home/\/data\/homes/' \
>> /etc/selinux/targeted/contexts/files/file_contexts.homedirs
No entanto, quando a política é reconstruída com semodule -B , minhas alterações são perdidas.
Eu sei que a maneira recomendada de modificar esses arquivos é usar semanage fcontext , mas no total há quase 200 regras que eu preciso adicionar, e executar semanage for each não é uma opção.
Como posso alterar manualmente os arquivos em /etc/selinux/targeted/contexts/files/file_contexts e garantir que as alterações sejam mantidas?