SELinux 在啟動時重新標記卡住了
我在伺服器上恢復 SELinux 時遇到問題,希望得到一些見解。
語境
在我們的伺服器上,我最近將 SELinux 從 更改
enforcing
為permissive
,因為它沒有解決我們的問題,這是一個奇怪的問題(意外的權限被拒絕),我什至將它設置為disabled
… 無論如何,SELinux 不是問題。我們想通了,現在已經解決了……但是 SELinux 現在被禁用了!現在我想恢復它。因此,我只是將其更改為
enforcing
再次,並且我希望系統能夠自動檢測到它需要touch /.autorelabel
在下次啟動時重新標記(因此不需要),that-work-in-the-past(tm)。可悲的是,它在啟動過程中卡住了,10 分鐘後我們又回到禁用狀態以恢復服務。文件指出這可能需要很長時間,所以我已安排在周末重新啟動。週末過後,它仍然卡在啟動中。奇怪的是,伺服器的 HDD 沒有顯示任何磁碟活動。
當我在虛擬機上執行上述操作時,它會啟動到同一點,然後列印一條消息,表明需要執行 SELinux 重新標記並執行此操作。在伺服器上,我們看不到該消息。
評論
伺服器有一些 CIFS 掛載,這會是 SELinux 嘗試重新標記 CIFS 文件系統的原因嗎?這可以解釋更長的時間和無磁碟活動,但這不能解釋控制台上沒有消息。
技術資訊
- CentOS 7.6 (1810) x86_64
- 裸機、戴爾伺服器、6x HDD RAID6(硬體)
- 沒有日誌寫入磁碟,最後啟動的單元是
Update UTMP about System Boot/Shutdown.
注意:有一篇RHEL 知識庫文章建議先通過許可從禁用到強制執行。並且每次重新啟動時,通過觸摸強制重新標記
/.autorelabel
。這將是我周末的下一次嘗試。但歡迎對正在發生的事情有任何見解。更新01
我現在做了進一步的測試。以下所有引導模式均失敗:
- 啟動
selinux=1, enforcing=0, autorelabel=0
- 啟動
selinux=1, enforcing=0, autorelabel=1
- 啟動
selinux=1, enforcing=1, autorelabel=0
- 啟動
selinux=1, enforcing=1, autorelabel=1
只有啟動與
selinux=0
工作。當我的意思是失敗時,這意味著引導時控制台上沒有錯誤消息,也沒有關於 SELinux 重新標記的消息,系統掛起數小時,沒有可見的磁碟活動。我現在已經註釋掉了
cifs
我的所有捲,/etc/fstab
並允許使用自動重新標記重新啟動。啟動花了大約 20 分鐘,但我可以看到它正在做某事(它列印在控制台上,顯示重新標記已啟動,顯示像 sysfs 這樣的 FS 是只讀的並且被忽略,磁碟活動可見等)。所以 SELinux 現在是在許可模式下啟用的。我現在將在本週末嘗試執行模式。顯然,這些 CIFS 掛載似乎是問題所在,但我不明白為什麼。對我來說,我的理解是 CIFS 掛載會被重新標記忽略,就像 sysfs 一樣。我在這裡誤解了什麼嗎?
有什麼具體的使用理由
/.autorelabel
嗎?我的理解是它觸發了restorecon
.要弄清楚為什麼會掛起,我建議切換到許可模式,並在沒有
/.autorelabel
文件的情況下啟動機器。當系統啟動並執行時嘗試restorecon -rFv /
。最終不要從整個系統的/
例如或較小部分開始。/var
restorecon的
-v
標誌顯示文件系統上所有正在進行的修改。它應該讓您很好地了解它在引導期間“掛起”的位置/.autorelabel
。我希望文件系統中有一些區域儲存了許多小文件。或者最終網路安裝儲存。完成此操作後,切換到
enforcing
不應該需要再次/.autorelabel
執行。$$ edit $$ 我剛剛在 Fedora 29 機器上驗證了
/.autorelabel
上述聲明。啟動它是一個 bash 腳本。該腳本使用參數執行。 是另一個實際執行的 bash 腳本。restorecon``/lib/systemd/system/selinux-autorelabel.service``/usr/libexec/selinux/selinux-autorelabel``/sbin/fixfiles``restore``/sbin/fixfiles``restorecon