我需要在具有虚拟 /proc 文件系统的 chroot 中运行一个进程,因此该进程无法访问在同一主机上运行的其他进程。该进程必须在 root 下运行,并且对 chroot 中的文件具有完全访问权限。此外,对文件系统的任何更改都必须保留在 chrooted 目录中。
这可能吗?
答案1
可以在 chroot 环境中挂载 /proc - 参见这个答案了解更多信息。
我担心该程序无法访问其他进程,因为大部分(如果不是全部)信息都可以通过 /proc 访问(/proc/[pid 号码] 将允许您访问此信息)。
目前还不清楚您所说的“对文件系统的更改”是什么意思,但是如果这些更改是对文件系统的更改(不包括特殊位,如 /proc、/dev/ 等),那么这些更改将保留在 chroot 中。
答案2
您可以使用 Linux 命名空间来实现这一点。容器(Docker、lxc)就是由这些命名空间组成的。man unshare
是您的朋友。请注意,如果您使用不当,攻击者很容易逃脱chroot
。使用前请先阅读本文。您已收到警告。