现在Linux的容器机制有很多: LXC、Docker、lmctfy、OpenVZ、Linux-VServer等等,所有这些都涉及内核补丁,或者是最近添加的Linux特性,比如cgroup和seccomp。
我想知道是否有可能完全在用户空间实现类似的(OS级)虚拟化。
这种用户模式Linux已经有了先例。然而,它也要求特殊的内核特性是合理快速和安全的。此外,它实际上是一个运行在用户空间中的Linux内核,这使得网络设置相当困难。
我更多地考虑的是一个进程,它将充当衍生程序和Linux内核之间的中介。您将以要生成的程序作为参数启动该进程;它将跟踪它们发出的系统调用,并阻止或重定向访问实际根文件系统、真实网络设备等的尝试,而不依赖特殊的内核特性。
这样的事情是否有可能安全地实现,并且能够由有限的用户(即不像chroot那样的特权)有效地调用?
总之:像LXC这样的纯用户空间实现是可能的吗?如果是的话,在用户空间做这件事的惩罚是什么?如果没有,为什么不呢?
发布于 2014-08-05 18:01:03
令人惊讶的是,答案是“是”:这就是systrace和sysjail所做的。
http://sysjail.bsd.lv/
在现代操作系统上,它们本身也是不安全的。
http://www.watson.org/~robert/2007woot/
因此,如果您想要正确的沙箱,它必须在内核空间完成。
https://stackoverflow.com/questions/25041619
复制相似问题