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

У меня есть сценарий, который должен работать в сетевом пространстве имен (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

Selinux находится в режиме принудительного запуска, и чтобы заставить его работать, мне нужно запустить 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 как разрешающего?

0 ответов

Другие вопросы по тегам