![是否可能在 Linux 下使用虚拟 /proc 文件系统在 chroot 中运行进程?](https://linux22.com/image/1525360/%E6%98%AF%E5%90%A6%E5%8F%AF%E8%83%BD%E5%9C%A8%20Linux%20%E4%B8%8B%E4%BD%BF%E7%94%A8%E8%99%9A%E6%8B%9F%20%2Fproc%20%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E5%9C%A8%20chroot%20%E4%B8%AD%E8%BF%90%E8%A1%8C%E8%BF%9B%E7%A8%8B%EF%BC%9F.png)
我需要在具有虚拟 /proc 文件系统的 chroot 中运行一个进程,因此该进程无法访问在同一主机上运行的其他进程。该进程必须在 root 下运行,并且对 chroot 中的文件具有完全访问权限。此外,对文件系统的任何更改都必须保留在 chrooted 目录中。
这可能吗?
答案1
可以在 chroot 环境中挂载 /proc - 参见这个答案了解更多信息。
我担心该程序无法访问其他进程,因为大部分(如果不是全部)信息都可以通过 /proc 访问(/proc/[pid 号码] 将允许您访问此信息)。
目前还不清楚您所说的“对文件系统的更改”是什么意思,但是如果这些更改是对文件系统的更改(不包括特殊位,如 /proc、/dev/ 等),那么这些更改将保留在 chroot 中。
答案2
您可以使用 Linux 命名空间来实现这一点。容器(Docker、lxc)就是由这些命名空间组成的。man unshare
是您的朋友。请注意,如果您使用不当,攻击者很容易逃脱chroot
。使用前请先阅读本文。您已收到警告。