SELinux가 아닌 시스템에서 설치된 ext4 이미지의 SELinux 컨텍스트를 읽거나 변경하는 방법은 무엇입니까?

SELinux가 아닌 시스템에서 설치된 ext4 이미지의 SELinux 컨텍스트를 읽거나 변경하는 방법은 무엇입니까?

SELinux를 지원하지 않는 Linux 시스템(Arch Linux)이 있습니다. 내 시스템에서 이러한 지원을 구성하고 싶지 않습니다. 이제 파일에 일부 SELinux 컨텍스트가 설정된 ext4 볼륨 이미지가 있습니다. 일부 파일의 컨텍스트를 읽고 변경해야 합니다. 이 이미지를 설치하고 ls -lZ작동 하면 ?컨텍스트 대신 가 표시됩니다.

시스템 전체에서 SELinux를 활성화하지 않은 경우 파일의 SELinux 컨텍스트에 어떻게 액세스하고 변경합니까? 이것이 가능하지 않다면 전체 시스템에 영향을 미치지 않지만 설치된 이미지 내에서 컨텍스트를 변경할 수 있는 최소 SELinux 구성은 무엇입니까?

답변1

SELinux 컨텍스트는 파일의 확장 속성( xattr, man 5 attr)에 저장됩니다. core/attr이를 사용하기 위한 도구는 소프트웨어 패키지에 제공됩니다.

SELinux 컨텍스트를 사용하여 속성을 검색할 수 있습니다 getfattr. 하지만 주의할 점이 있습니다. 기본적으로 네임스페이스에 있는 속성 getfattruser.나열됩니다. 필요한 속성은 네임스페이스에 selinux있습니다 . 따라서 모든 네임스페이스에 대한 속성을 요청하려면 옵션을 security전달해야 합니다 ( 예: 값 및 이름 덤프).-m --d

$ getfattr -m - -d bin/sh
# file: bin/sh
security.selinux="u:object_r:system_file:s0"

selinux 컨텍스트를 변경하기 위해 setfattr루트 권한이 필요한 도구를 사용했습니다.

$ sudo setfattr -n security.selinux -v u:object_r:shell_exec:s0 bin/sh
$ getfattr -m - -d bin/sh
# file: bin/sh
security.selinux="u:object_r:shell_exec:s0"

관련 정보