![запуск скрипта bash в сетевом пространстве имен с применением systemd и selinux?](https://rvso.com/image/1520732/%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%20%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B0%20bash%20%D0%B2%20%D1%81%D0%B5%D1%82%D0%B5%D0%B2%D0%BE%D0%BC%20%D0%BF%D1%80%D0%BE%D1%81%D1%82%D1%80%D0%B0%D0%BD%D1%81%D1%82%D0%B2%D0%B5%20%D0%B8%D0%BC%D0%B5%D0%BD%20%D1%81%20%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC%20systemd%20%D0%B8%20selinux%3F.png)
У меня есть скрипт, который нужно запустить в сетевом пространстве имен (ip netns exec), и я написал файл службы systemd.
Однако запуск невозможен, сообщает journalctl -xe:
ip[7918]: выполнение "/usr/share/stats/run_collect.sh" не удалось: Отказано в доступе
Файл службы выполняет команду как (это инстанцированная служба)
ExecStart=/sbin/ip netns exec ns%i /usr/share/stats/run_collect.sh %i
Selinux находится в режиме enforcing, и чтобы он заработал, мне нужно запустить 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 как разрешающего?