
네트워크 네임스페이스(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는 실행 모드에 있으며 작동하게 하려면 semanage permissive -a ifconfig_t
.
그렇지 않으면 스크립트가 실행되지 않습니다.
다른 시도에서 스크립트가 시작되었지만 스크립트에 의해 시작된 tcpdump 프로세스가 /var/log/stats/의 로그 파일에 쓰기 위한 올바른 selinux 컨텍스트를 놓쳤기 때문에 재현할 수 없는 상황에 처했습니다. . ( semanage fcontext -a -t ifconfig_exec_t /usr/share/stats/run_collect.sh
로 발급해서 적용하다 보니 그런 상황이 된 것 같아요
restorecon -Frvv /usr/share/stats/
. 이걸 반복하면 안 되더라구요....)
ifconfig_t 도메인을 허용으로 설정하지 않고 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?