Linux
為什麼 procfs 掛載選項僅適用於重新掛載?
我為我的系統編寫了自己的初始化程序(pid 1),為了提高安全性,我決定在安裝位置時添加(
hidepid=2
預設情況下未安裝)。procfs``/proc``procfs
安裝後,
procfs
我執行mount
命令以使用給定的安裝選項檢查所有安裝是否正常,我注意到選項hidepid=2
中沒有列出。一段時間後,我發現hidepid=2
只能在remount
.我也使用命令行確認了行為,如下所示
- 最初
/proc
沒有安裝procfs
- 執行
mount -t proc -o hidepid=2 proc /proc
- 執行
mount
,顯示proc on /proc type proc (rw,relatime)
- 執行
mount -t proc -o remount,hidepid=2 proc /proc
- 執行
mount
,顯示proc on /proc type proc (rw,relatime,hidepid=2)
任何人都請解釋我為什麼我無法一次嘗試
procfs
安裝hidepid=2
?
Linux核心中有一個送出(https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=69879c01a0c3f70e0887cfb4d9ff439814361e46)說:
此外,消除核心掛載的不必要的複雜性修復了導致 proc 掛載選項被忽略的回歸。現在 proc 的初始掛載來自使用者空間,這些掛載選項再次得到尊重。這修復了 Android 對 proc hidepid 選項的使用。
所以這似乎是Linux核心中的一個錯誤,目前(https://github.com/torvalds/linux/commit/69879c01a0c3f70e0887cfb4d9ff439814361e46),它僅在v5.7版本(v5.7)的候選發布標籤中修復-rc4、v5.7-rc3、v5.7-rc2 和 v5.7-rc1)。