LXC中的chroot-escape保护是如何实现的?有保证,没有办法逃脱lxc容器到主机吗?
我知道,linux-vserver使用了chroot-barrier,但它不属于库存内核,不会发生。
答案 0 :(得分:1)
您是否看到了"正在应用挂载名称空间"文章:http://www.ibm.com/developerworks/library/l-mount-namespaces/
在"每用户root"部分:
"这种方法的一个缺点是普通的chroot()可以被转义,虽然需要一些特权。例如,当使用包括CAP_SYS_CHROOT在内的某些功能执行时,程序打开chroot()(请参阅参考资料)的源代码将导致程序进入真正的文件系统根目录。根据每用户文件系统树的实际动机和使用情况,这可能是一个问题。
我们可以通过在私有命名空间而不是chroot(2)中使用pivot_root(2)来将登录的根目录更改为/ share / USER / root来解决此问题。 chroot()只是将进程的文件系统根指向指定的新目录,而pivot_root()从其挂载点分离指定的new_root目录(必须是挂载),并将其附加到进程根目录。由于装载树没有新根的父级,因此不能像使用chroot()那样欺骗系统输入它。我们将使用pivot_root()方法。"
简而言之,我已经看到与mnt名称空间结合使用的pivot_root可以缓解这些问题。