![SElinux가 시작 시 사용자 정의 시스템 서비스를 차단하는 것을 방지하는 방법은 무엇입니까?](https://linux55.com/image/211768/SElinux%EA%B0%80%20%EC%8B%9C%EC%9E%91%20%EC%8B%9C%20%EC%82%AC%EC%9A%A9%EC%9E%90%20%EC%A0%95%EC%9D%98%20%EC%8B%9C%EC%8A%A4%ED%85%9C%20%EC%84%9C%EB%B9%84%EC%8A%A4%EB%A5%BC%20%EC%B0%A8%EB%8B%A8%ED%95%98%EB%8A%94%20%EA%B2%83%EC%9D%84%20%EB%B0%A9%EC%A7%80%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
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를 다시 활성화했고 부팅 후 서비스가 시작되었습니다. chcon
selinux가 미리 비활성화되어 있었기 때문에 내가 실행한 명령이 효과가 없었던 것 같습니다 .
이제 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