我添加了 SELinuxsvirt_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。
答案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
組合來設定它們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
請注意,這是基於我的主目錄,您可能需要尋找更多內容,但如果您獲得了大部分正確的內容,您應該或多或少回到正軌。