
我們最近經歷了一次電源故障和同時備用發電機故障,嚴重到需要安全關閉所有伺服器,因為它們的 UPS 正在耗盡。
在備份一台CentOS 7.4.1708 伺服器時(這是幾個月來的第一次“重啟”,但它在CentOS 更新方面是最新的),我遇到了阻礙,無法在啟用SELinux 的情況下啟動它。我進行了廣泛的研究,但似乎找不到其他人經歷過這種情況的證據,我也不知道下一步該嘗試什麼。我希望這裡有人可以提供一些想法。
這是時間表:
- 已啟動
由於多個服務未啟動而導致啟動失敗:
FAILED Failed to start Login Service. See 'systemctl status systemd-logind.service' for details. FAILED Failed to start Authorization Manager. See 'systemctl status polkit.service' for details. DEPEND Dependency failed for Dynamic System Tuning Daemon.
提示者:這我用
selinux=0
grub重新啟動這可以工作並讓系統運行,但是在禁用 SELinux 的情況下,除了臨時解決方法之外,這對我們來說是不可行的
已關注在網路上找到的建議:
sudo yum reinstall selinux-policy-targeted
重新啟動
由於以下原因,現在啟動失敗:
Failed to load SELinux policy, freezing
selinux=0
再次在 grub 中重新啟動成立更多建議如此執行:
sudo yum reinstall selinux-policy-targeted sudo touch /.autorelabel
並設定許可
/etc/selinux/config
重新啟動
可以看到以下橫幅:
Warning -- SELinux targeted policy relabel is required. Relabeling could take a very long time, depending on file system size and speed of hard drives.
但係統並沒有真正執行重新標記,而是立即自行重新啟動——速度太快,看不到任何其他輸出
再次啟動失敗,並出現原始錯誤。
所以我們又回到這裡了。我可以看到它
/.autorelabel
仍然存在,表明重新標籤沒有發生。但令我驚訝的是,我們又回到了錯誤的原點。另請記住,SELinux 仍處於寬容模式,而不是強制模式。
最終結果是我陷入困境,無法在寬容或強制模式下啟用 SELinux,這是不好的。
我應該如何進行?
答案1
長話短說:一切都歸結為 的無效值SELINUXTYPE
。
確保SELINUXTYPE
有一個有效的值,然後根據需要執行重新標記(例如,如果您在診斷期間關閉了 SELinux 啟動),請重新啟動並開啟香檳。
不知為何,在某個時間點,/etc/selinux/config
獲得了設定SELINUXTYPE=permissive
。
這不是該參數的有效選項,並且根據列出的 Dbus、登入服務和授權管理器失敗的原因,它似乎使該值回退到「預設」值:
Failed to open "/etc/selinux/default/contexts/dbus_contexts": No such file or directory
selinux-policy-default
這很麻煩,因為CentOS 7 中沒有軟體包(例如,在 Debian 上,它在 Jessie 中被故意刪除所以我想這裡也是如此)。
我懷疑這也是為什麼嘗試使用restorecon
(從單用戶模式和通過 shell 到達的init=/sbin/sh
)重新標記文件系統會導致令人困惑的“沒有這樣的文件或目錄”輸出,並且getenforce
仍然會無明顯原因地顯示“已禁用” 。
切換到的selinux-policy-targeted
東西是安裝後,我將配置修復為SELINUXTYPE=targeted
(因為我相信它應該一直如此),然後再次重新啟動enforcing=0 autorelabel=1
。
然後進行了重新貼標籤。隨後,系統正常啟動。
答案2
您應該能夠使用以下命令重新標記檔案系統:
# restorecon -rv /
我不能 100% 確定這在停用模式下是否有效,您可能需要處於許可/強制模式。
您可以在啟用 selinux 的情況下啟動嗎init=/bin/sh
?
答案3
你應該啟動到恢復模式然後root shell終端並輸入disabled = 1然後恢復而不重新啟動然後在設定檔上禁止它...然後卸載selinux然後重新啟動
答案4
有時,即使 SELinuxtype 設定正確,由於 SELinux 策略,也會遇到相同的問題。在啟動畫面上會顯示以下行:
Failed to load SELinux policy, freezing
要解決此問題,作為另一種解決方法,您可以先將 SELinux 設定為permissive
模式,
然後重新啟動計算機,您將在重新啟動畫面上看到 SELinux 產生策略。之後您可以再次將其設定為強制模式,沒有問題。
在解決問題之前,您可以檢查策略開發套件。
sudo yum install policycoreutils-devel
也許您在安裝它時會遇到錯誤。這主要是因為軟體包衝突,即使對於 Red Hat 8 仍然會出現這種情況