Ambiente : Estou executando o Fedora 24 com contêineres LXC (2.0.6) dentro e o SELinux ativado.
Problema : Configurar contêineres do Linux e iniciá-los está tudo bem, e o mesmo vale para anexar a um contêiner via lxc-attach
, exceto para os contêineres que foram iniciados pelo recurso de autoinicialização de LXC ( lxc.start.auto = 1
no seu arquivo de configuração).
Para qualquer contêiner de início automático ao qual não posso me associar, posso lxc-stop
e lxc-start
novamente, com o que posso diretamente lxc-attach
para esse contêiner.
O que tentei : já verifiquei a solução proposta deste bug- relatório , que consiste em instalar as extensões container-selinux e adicionar o rótulo correto ( container_runtime_exec_t
) aos executáveis /usr/bin/lxc-*
, o que inclui lxc-attach
. Embora também seja proposta como possível solução, não adicionei um rótulo ao contexto da pasta base para meus sistemas de arquivos raiz de todos os contêineres ( chcon -Rt container_var_lib_t /var/lib/lxc
).
Saída : Com contêineres iniciados manualmente não tenho problemas para anexar ( lxc-attach -n name_of_container
), mas quando tento conectar a um contêiner que foi iniciado automaticamente na inicialização do sistema, recebo um mensagem no terminal como
lxc-attach: attach.c: lxc_attach_run_shell: 1325 Permission denied - failed to exec shell
enquanto no arquivo /var/log/audit/audit.log
eu recebo uma mensagem como
type=AVC msg=audit(1484836169.882:2969): avc: denied { entrypoint } for pid=7867 comm="lxc-attach" path="/bin/dash" dev="sda3" ino=10289 scontext=system_u:system_r:unconfined_service_t:s0 tcontext=unconfined_u:object_r:unlabeled_t:s0 tclass=file permissive=0
Se eu pesquisar os rótulos dos processos que executam meus contêineres ( ps -eZ | grep lxc
), obtenho
system_u:system_r:unconfined_service_t:s0 2794 ? 00:00:00 lxc-autostart
para contêineres iniciados automaticamente, em comparação com
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 6399 ? 00:00:00 lxc-start
para contêineres iniciados manualmente.
Minha pergunta : sou um pouco novo demais para o SELinux, mas o que eu posso ver na saída acima é que o contexto no qual o contêiner é executado depois de ter sido iniciado na inicialização do sistema é bem diferente do contexto em que o meu lxc-attach
é executado (o contexto anterior começa com scontext=system_u:...
, enquanto o contexto atual seria tcontext=unconfined_u:...
do arquivo audit.log acima).
É por isso que tenho que pedir a alguém que me explique: que tipo de incompatibilidade faz com que essa permissão seja negada? E: posso consertar isso?