
Tengo un script que debe ejecutarse en un espacio de nombres de red (ip netns exec) y he escrito un archivo de servicio systemd.
Sin embargo, no se inicia, según informa journalctl -xe:
ip[7918]: error en la ejecución de "/usr/share/stats/run_collect.sh": permiso denegado
El archivo de servicio ejecuta el comando como (es un servicio instanciado)
ExecStart=/sbin/ip netns exec ns%i /usr/share/stats/run_collect.sh %i
Selinux está en modo de aplicación y, para que funcione, tengo que ejecutar semanage permissive -a ifconfig_t
.
Sin eso el script no se ejecuta,
En mis diferentes intentos, me encontré en una situación, que no puedo reproducir, en la que el script se inició pero luego falló porque el proceso tcpdump iniciado por el script perdió el contexto selinux correcto para escribir en un archivo de registro en /var/log/stats/ . (Creo que me encontré en esa situación cuando lo emití
semanage fcontext -a -t ifconfig_exec_t /usr/share/stats/run_collect.sh
y lo apliqué restorecon -Frvv /usr/share/stats/
. Sin embargo, repetir esto no funciona...)
¿Cuál es el mejor enfoque para que esto funcione sin configurar el dominio ifconfig_t como permisivo?