我需要在具有虛擬 /proc 檔案系統的 chroot 中運行一個進程,因此該進程無法存取同一主機上運行的其他進程。該進程必須在 root 下運行,並且對 chroot 中的檔案具有完全存取權。此外,檔案系統的任何變更都必須保留在 chroot 目錄中。
有可能嗎?
答案1
可以在 chroot 環境中掛載 /proc - 請參閱這個答案了解更多相關資訊。
我擔心該程式將無法存取其他進程,因為可以透過 /proc 存取這些資訊(如果不是全部)(/proc/[pid number] 將允許您存取此資訊)。
目前還不清楚「檔案系統的變更」是什麼意思,但如果這些變更是針對檔案系統的,不包括 /proc、/dev/ 等特殊位,則這些變更將保留在 chroot 中。
答案2
您可以使用 Linux 命名空間來完成此任務。容器(Docker、lxc)就是由它們組成的。man unshare
是你的朋友。請注意,chroot
如果使用不當,攻擊者很容易逃脫。使用前請先閱讀此內容。你被警告了。