Ich habe ein Skript, das in einem Netzwerk-Namespace (ip netns exec) ausgeführt werden muss, und ich habe eine systemd-Servicedatei geschrieben.

Es kann jedoch nicht gestartet werden, journalctl -xe meldet:

ip [7918]: exec von "/usr/share/stats/run_collect.sh" fehlgeschlagen: Berechtigung verweigert

Die Servicedatei führt den Befehl aus als (es handelt sich um einen instanziierten Service).

ExecStart=/sbin/ip netns exec ns%i /usr/share/stats/run_collect.sh %i

Selinux ist im Modus Enforcement, und um es zum Laufen zu bringen, muss ich ausführen semanage permissive -a ifconfig_t.
Ohne das wird das Skript nicht ausgeführt,

Bei meinen verschiedenen Versuchen geriet ich in eine Situation, die ich nicht reproduzieren kann, wo das Skript aber gestartet wurde ist dann fehlgeschlagen, weil der vom Skript gestartete tcpdump-Prozess den korrekten Selinux-Kontext verpasst hat Schreiben Sie in eine Protokolldatei in / var / log / stats /. (Ich glaube, ich war in dieser Situation, als ich ausgestellt hatte semanage fcontext -a -t ifconfig_exec_t /usr/share/stats/run_collect.sh und bewerben Sie sich mit restorecon -Frvv /usr/share/stats/. Wiederholen funktioniert aber nicht ....)

Was ist der beste Ansatz, um dies zum Laufen zu bringen, ohne die Domäne ifconfig_t als zulässig festzulegen?

user300811
quelle