SELinux용 systemd 확장 개발의 딜레마

SELinux용 systemd 확장 개발의 딜레마

모두,

나는 systemd-sleep과 유사하게 일시 중지, 하이브리드 절전 등에서 사용자 정의 스크립트 호출을 지원하기 위해 systemd-sleep을 확장하는 systemd에 대한 수정을 개발 중입니다. 이것은 잘 작동했지만 SELinux 지원 시스템에서 테스트를 시작했을 때 문제가 발생하기 시작했습니다.

저는 SELinux에 익숙하지 않아서 어디서부터 살펴봐야 할지조차 모릅니다. 기본적으로 서비스는 구성된 사용자(/usr/lib/systemd/systemd-sleep-user)로 스크립트를 호출하여 $HOME/.config/systemd/system-sleep.

관련 오류 메시지는 다음과 같습니다.SELinux is preventing systemd-sleep-u from execute_no_trans access on the file /home/stallion/.config/systemd/system-sleep/kill-scdaemon.sh.

이 동작은 systemd-sleep 작동 방식과 유사하므로(/usr/lib/systemd/system-sleep을 사용하지만) 이는 사용자 위치에 동일한 속성을 적용하기만 하면 됩니다.

어떤 아이디어가 있나요?

편집하다:관련 감사 로그 항목은 다음과 같습니다.

type=AVC msg=audit(1508702442.885:388): avc:deny{execute_no_trans} for pid=3539 comm="systemd-sleep-u" path="/home/stallion/.config/systemd/system-sleep/kill- scdaemon.sh" dev="dm-3" ino=533984 scontext=system_u:system_r:init_t:s0 tcontext=system_u:object_r:config_home_t:s0 tclass=파일 권한=0

답변1

특정 액세스를 허용하는 SELinux 정책에 규칙이 없기 때문에 오류가 발생합니다: 컨텍스트가 있는 파일의 변환되지 않은 실행 허용구성_홈_t실행되는 프로세스를 통해초기화_t필드.

이러한 규칙을 포함하는 사용자 정의 정책 모듈을 만들 수 있지만 아마도 허용하고 싶지 않을 것입니다.어느실행할 프로세스를 초기화합니다.어느사용자 마스터 데이터로 태그가 지정된 파일입니다. 또 다른 옵션은 스크립트에 대한 새 파일 컨텍스트, 일치하는 레이블 규칙 및 프로세스를 허용하는 규칙을 포함하는 사용자 지정 정책을 만드는 것입니다.초기화_t도메인을 실행합니다.

세 번째 옵션(아마도 가장 간단한)은 다음 프로세스를 실행하도록 systemd를 구성하는 것입니다.무제한 도메인, SELinux에는 거의 제한이 없습니다(일반 DAC와 같은 제한은 여전히 ​​적용됩니다). SELinuxContextsystemd 서비스 파일의 옵션을 사용하십시오 .

SELinuxContext=system_u:system_r:unconfined_t:s0 

관련 정보