了解取消共享CLONE_NEWNS的行为

i0e*_*ion 3 kernel namespaces

我写了一个小的C程序,它只是一个unshare(CLONE_NEWNS),然后是system("bash").

手册页说该进程应该有自己的命名空间.所以,在shell中我尝试了卸载/ cgroup(cgroup安装在原始机器上).

当我在机器上的shell中进行挂载时,/ cgroup也会在那里卸载.我在这里错过了什么吗?我认为CLONE_NEWNS是让我从进程中卸载文件系统而不影响主系统.

caf*_*caf 5

(顺便说一句,你不需要编写程序 - 你可以只使用该unshare(1)实用程序).

卸载仅在新的命名空间的文件系统,并留下它安装在原来的-问题是,mount使用/etc/mtab产生当前安装的文件系统的列表,而这仅仅是可以通过更新一个普通的文件mount命令,在新命名空间.这意味着/etc/mtab与实际发生的事情不同步(因为只有一个 /etc/mtab,但是两个安装命名空间).

/proc/mounts相反,请检查当前命名空间中实际挂载的内容.