SElinux가 시작 시 사용자 정의 시스템 서비스를 차단하는 것을 방지하는 방법은 무엇입니까?

SElinux가 시작 시 사용자 정의 시스템 서비스를 차단하는 것을 방지하는 방법은 무엇입니까?

SElinux는 시작 시 systemd가 내 사용자 정의 서비스를 선택하지 못하게 합니다.

MESSAGE=SELinux로 인해 systemd가 custom.service 파일에 대한 액세스를 읽을 수 없습니다.

다시 시작하기 전에

[root@box opt]# systemctl daemon-reload
[root@box opt]# systemctl enable --now custom
[root@box opt]# systemctl status custom.service
● custom.service - foo
   Loaded: loaded (/opt/foo/bar/systemd/custom.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2022-10-07 12:18:27 EDT; 1min 28s ago
...
...

다시 시작한 후

[root@box opt]# systemctl status custom.service
Unit custom.service could not be found.

그래서 selinux를 비활성화하고 재부팅했지만 도움이 되지 않는 것 같습니다. 그런 다음 selinux 사용자, 역할 및 서비스 파일 유형을 변경하고 다시 재부팅을 시도했습니다.

[root@box opt]# chcon -R -u unconfined_u -r object_r -t systemd_unit_file_t foo/bar/systemd/

아직 아무 것도 없습니다... 그러다가 제가 배치한 심볼릭 링크가 두 번째 컨텍스트를 /etc/systemd/system표시한다는 것을 알았습니다 . 서비스 파일을 해당 디렉토리에 ?넣으면 동일한 일이 발생합니다 .cp/etc/systemd/system

[root@box opt]# ls -Z /etc/systemd/system/custom.service
? /etc/systemd/system/custom.service

이 문제를 해결하려면 여기서 무엇을 해야 하는지 아는 사람이 있나요?

총 길이 DR- SElinux는 selinux가 비활성화된 경우에도 systemd가 활성화된 사용자 정의 systemd 단위를 읽지 못하도록 방지합니다.

답변1

해결책을 찾았습니다.

허용 모드에서 selinux를 다시 활성화했고 부팅 후 서비스가 시작되었습니다. chconselinux가 미리 비활성화되어 있었기 때문에 내가 실행한 명령이 효과가 없었던 것 같습니다 .

이제 selinux를 비활성화하고 재부팅했는데 모든 것이 제대로 작동하는 것 같습니다. selinux가 비활성화된 경우 두 번째 컨텍스트가 왜 중요한지 아직도 잘 이해하지 못합니다.

# ls -Z now shows the correct context
[root@box ~]$ ls -Z /etc/systemd/system/custom.service
system_u:object_r:systemd_unit_file_t:s0 /etc/systemd/system/custom.service

관련 정보