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