Eu tenho um script que precisa ser executado em um namespace de rede (ip netns exec) e escrevi um arquivo de serviço systemd.
Ele não inicia, no entanto, os relatórios journalctl -xe:
ip [7918]: falha na execução de "/usr/share/stats/run_collect.sh": Permissão negada
O arquivo de serviço está executando o comando como (é um serviço instanciado)
ExecStart=/sbin/ip netns exec ns%i /usr/share/stats/run_collect.sh %i
Selinux está no modo enforcing, e para que funcione eu tenho que executar semanage permissive -a ifconfig_t
.
Sem isso o script não é executado,
Nas minhas diferentes tentativas, entrei em uma situação que não consigo reproduzir, onde o script começou, mas
então falhou porque o processo tcpdump iniciado pelo script perdeu o contexto selinux correto para
gravar em um arquivo de log em / var / log / stats /. (Eu acho que cheguei nessa situação quando eu tinha emitido
semanage fcontext -a -t ifconfig_exec_t /usr/share/stats/run_collect.sh
e aplicando-o com restorecon -Frvv /usr/share/stats/
. Repetir isso não funciona embora ...)
Qual é a melhor abordagem para conseguir que isso funcione sem definir o domínio ifconfig_t como permissivo?