SELinux 라벨을 제거하는 방법은 무엇입니까?

SELinux 라벨을 제거하는 방법은 무엇입니까?

SELinux 라벨을 추가했습니다 svirt_sandbox_file_t./home

chcon -Rt svirt_sandbox_file_t /home

라벨은 다음을 사용하여 표시됩니다.

[user@localhost ~]$ ls -Z
unconfined_u:object_r:svirt_sandbox_file_t:s0 Desktop
unconfined_u:object_r:svirt_sandbox_file_t:s0 Documents
...

라벨을 다시 제거하려면 어떻게 해야 하나요 svirt_sandbox_file_t?

재부팅을 시도하고 /home/.autorelabel레이블 재지정을 트리거하기 위해 를 추가했지만 레이블이 사라지지 않습니다. 페도라 23을 사용하고 있습니다.

답변1

/etc/selinux/config재부팅 하도록 설정하면 믿습니다 disabled. 그런 다음 으로 설정 enforcing하고 재부팅하면 레이블을 다시 지정하는 데 문제가 있는 경우 레이블이 다시 지정됩니다. 그래도 Restorecon이 작동하지 않는 것이 이상합니다.

어려운 방법으로 재설정하려면 /home 디렉토리 자체는 다음과 같아야 합니다.

system_u:object_r:home_root_t

각 사용자 홈 디렉터리(및 그 안에 있는 파일)는 다음과 같아야 합니다.

unconfined_u:object_r:user_home_dir_t:s0

명령을 사용하거나 및 chcon의 조합을 사용하여 이를 설정할 수 있습니다 .semanagerestorecon

chcon -t home_root_t /home
chcon -Rt user_home_dir_t /home/*

또는

 semanage fcontext -a -t home_root_t /home
 semanage fcontext -a -t user_home_dir_t /home/*
 restorecon -R /home

점에 유의하시기 바랍니다일반적으로 말하면 chcon기본값을 그대로 유지하면서 즉시 변경을 강제하는 데 사용되므로 a는 restorecon이를 기본 컨텍스트로 복원합니다. 귀하의 경우에는 어떤 이유로든 잘못된 것 같습니다.

일반적으로 semanage fcontext로컬 컨텍스트 파일을 작성하기 위한 것입니다./etc/selinux/targeted/contexts/files/file_contexts.local

현재 컨텍스트에 대한 풍부한 정보와 기본 컨텍스트는 다음에서 찾을 수 있습니다.

/etc/selinux/targeted/contexts/default_contexts
/etc/selinux/targeted/contexts/files/file_contexts
/etc/selinux/targeted/contexts/files/file_contexts.homedirs

해당 파일이 어떻게든 손상되었을 가능성이 있으며 전반적으로 해당 파일이 수정된 방식에 따라 위 작업으로 완전히 복원되지 않을 수 있는 하위 컨텍스트가 많이 있습니다. 해당 파일을 검사하고 추가된 컨텍스트 매핑을 찾아서 제거할 수 있는지 확인하는 것이 좋습니다.

이론적으로는 가상 머신이나 다른 머신(또는 온라인에서 찾을 수도 있음)을 가져와 알려진 양호한 기본값을 적절한 디렉터리에 복사하고 시스템이 적절한 기본값을 얻기 위해 레이블을 다시 지정하도록 허용할 수도 있습니다. 하지만 이것도 약간의 단점이 있습니다.

하루가 끝나면 약간의 시행착오가 필요할 것입니다. 위에 나열된 chcon/semanage 명령은 광범위한 스트로크를 제공해야 하지만 일부 하위 디렉토리에는 자체 컨텍스트가 있을 수도 있습니다.

도움이 될 수 있는 몇 가지 추가 컨텍스트(모두 /home/username에 있음:

ls -laZ /home/username

##context###########################  Directory##
unconfined_u:object_r:cache_home_t:s0 .cache
unconfined_u:object_r:config_home_t:s0 .config
unconfined_u:object_r:dbus_home_t:s0 .dbus
unconfined_u:object_r:gconf_home_t:s0 .gconf
unconfined_u:object_r:gconf_home_t:s0 .gconfd
unconfined_u:object_r:gpg_secret_t:s0 .gnupg
unconfined_u:object_r:gconf_home_t:s0 .local
unconfined_u:object_r:ssh_home_t:s0 .ssh

이것은 내 홈 디렉토리를 기반으로 하기 때문에 더 많은 정보를 찾아야 할 수도 있지만 대부분의 정보를 정확하게 얻으면 어느 정도 정상으로 돌아올 수 있습니다.

관련 정보