Linux

如何去除 SELinux 標籤?

  • November 5, 2015

我將 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觸發重新標記,但標籤不會消失。我正在使用 Fedora 23。

我相信如果你設置/etc/selinux/config重啟disabled。然後將其設置為enforcing並重新啟動,如果您無法重新標記它,它將重新標記。奇怪的是 restorecon 沒有工作。

如果您想以困難的方式重置,/home 目錄本身應該是:

system_u:object_r:home_root_t

並且每個使用者主目錄(以及其中的文件)應該是:

unconfined_u:object_r:user_home_dir_t:s0

您可以使用chcon命令設置這些,也可以使用semanage和的組合restorecon

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用於強制立即更改,同時保留預設值,以便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

請注意,這是基於我的主目錄,您可能需要尋找更多內容,但如果您獲得了大部分正確的內容,您應該或多或少回到正軌。

引用自:https://unix.stackexchange.com/questions/240813