如何去除 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
觸發重新標記,但標籤不會消失。我正在使用 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
請注意,這是基於我的主目錄,您可能需要尋找更多內容,但如果您獲得了大部分正確的內容,您應該或多或少回到正軌。