Devices
chrooted系統有什麼限制?
Chroot 允許我們更改根目錄,或者更確切地說是特定程序的根目錄。現在顯然這確實將程序限制為指定的樹(除非它不放棄特權)。
但我想知道在這種情況下還會出現哪些其他限制。特別是關於對設備和其他資源的訪問。顯然,如果該過程沒有 chroot 出來,回到原始樹。
在我看來,如此巨大的變化應該對系統功能產生進一步的影響。但我找不到任何具體的東西。
也許沒有,但這似乎不太可能,我仍然更願意確切地知道。
從功能上講,什麼都沒有。從字面上看,該
chroot()
呼叫所做的只是更新核心為您的程序錨定路徑解析的位置。特別是,除非您也放棄 root 權限,否則您仍然可以訪問/proc
並且/sys
(因為您可以進行適當的mount()
系統呼叫,不需要外部二進製文件),您仍然可以訪問設備節點(您可以mknod()
再次使用系統呼叫創建它們不需要外部二進製文件),並且真的可以做你能想像到的所有其他事情。如果您在進入 chroot 後立即放棄 root 權限(就像大多數表現良好的應用程序一樣),您仍然可以從切換到的使用者上下文執行任何您可以執行的操作,前提是您不需要任何外部程序或庫。不在 chroot 環境中。
但請注意,即便如此,chroot 本身的實際安全價值幾乎為零。實際上,通過各種機制來逃避 chroot*真的很容易(說真的,只需在您最喜歡的搜尋引擎上搜尋“escape from chroot”,您就會發現結果列出了至少六種方法)。*在任意應用程序中利用此漏洞所需要的只是一個 ACE 漏洞。事實上,
chroot()
它最初根本不是為了安全而設計的,它是(現在仍然是)一種開發人員工具,旨在允許在隔離環境中測試新軟體(除其他外,現在它更常用於在自動化建構和 CI 系統)。