запуск скрипта bash в сетевом пространстве имен с применением systemd и selinux?

676
user300811

У меня есть скрипт, который должен работать в сетевом пространстве имен (ip netns exec), и я написал файл службы systemd.

Журнал не запускается, однако, journalctl -xe сообщает:

ip [7918]: сбой exec из "/usr/share/stats/run_collect.sh": отказано в разрешении

Сервисный файл выполняет команду как (это инстанцированный сервис)

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

Селинукс работает в режиме принудительного запуска, и чтобы заставить его работать, мне нужно бежать semanage permissive -a ifconfig_t.
Без этого сценарий не выполняется,

В моих разных попытках я попал в ситуацию, которую я не могу воспроизвести, когда скрипт запускается, но затем завершается неудачно, потому что процесс tcpdump, запущенный скриптом, пропустил правильный контекст selinux для записи в файл журнала в / var / log / stats /, (Я думаю, что я попал в ту ситуацию, когда я выпустил semanage fcontext -a -t ifconfig_exec_t /usr/share/stats/run_collect.shи применил его restorecon -Frvv /usr/share/stats/. Повторение этого не работает, хотя ....)

Каков наилучший подход, чтобы заставить это работать без установки домена ifconfig_t как разрешающего?

2

0 ответов на вопрос

Похожие вопросы