SELinux 라벨을 수정하는 데 필요한 권한

SELinux 라벨을 수정하는 데 필요한 권한

SELinux를 지원하는 코드를 작성 중입니다. 저는 이 보안 모듈을 처음 접했고 학습 곡선이 가파릅니다.

내 코드가 SELinux 환경에서 작동하려면 파일에 레이블을 다시 지정할 수 있어야 합니다. 예를 들어, 임시 파일 시스템을 마운트하고 마운트한 후 원래 레이블을 복원하려고 합니다.

분명히 설치 부분(CAP_SYS_ADMIN 기능 포함)에서는 루트여야 하지만 레이블 재지정 부분에서는 루트여야 합니까?

Fedora에서는 내가 소유한 파일의 레이블을 다시 지정할 수 있습니다. 예를 들어 권한이 없는 사용자로서 다음을 수행할 수 있습니다.

$ touch /tmp/test
$ ls -Z /tmp/test
unconfined_u:object_r:user_tmp_t:s0 /tmp/test
$ chcon system_u:object_r:etc_t:s0 /tmp/test
$ ls -Z /tmp/test
system_u:object_r:etc_t:s0 /tmp/test

다른 사용자가 소유한 파일에 레이블을 다시 지정할 수 있는 권한이 없는 것 같습니다.

하지만 이제 RedHat에서 다음을 발견했습니다.수동:

SELinux 정책은 사용자가 특정 파일의 SELinux 컨텍스트를 수정할 수 있는지 여부를 제어합니다.

이는 이 동작이 실제로 구성 가능하며 내가 소유한 파일에 레이블을 다시 지정할 수 있다고 믿을 수 없음을 나타내는 것 같습니다.

편집하다: Fedora는 constraints.

# dnf install setools-console
# seinfo --constrain
...
constrain file {relabelto create relabelfrom } (u1 == u2 or ( t1 == can_change_object_identity ));
...

관련 정보