![使用 --mount-proc 取消共享会创建一个新的 mnt 命名空间](https://linux22.com/image/196287/%E4%BD%BF%E7%94%A8%20--mount-proc%20%E5%8F%96%E6%B6%88%E5%85%B1%E4%BA%AB%E4%BC%9A%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E6%96%B0%E7%9A%84%20mnt%20%E5%91%BD%E5%90%8D%E7%A9%BA%E9%97%B4.png)
我对与命令--mount-proc
一起使用时的作用有点困惑。unshare
当我使用 时unshare -fp --mount-proc bash
,我注意到它会产生一个新的 PID 命名空间和一个新的 MNT 命名空间。
鉴于我位于新的 MNT 命名空间中,我尝试卸载其中一个循环设备,并注意到这并未反映在父 MNT 中(当我df -h
在父命名空间中运行时,挂载仍然显示)。
现在,我向前迈出了一步,在新的 MNT 命名空间中使用 创建了一个新的根pivot_root
,并卸载了原始根。正如预期的那样,新的命名空间现在具有不同的根。父命名空间仍然具有原始根目录。
-m
我的问题:如果我可以在不使用命令中的选项的情况下实现创建新的 MNT 命名空间unshare
,并且还可以为新进程创建隔离的根目录,那么 MNT 命名空间有什么不同的用途?
我将不胜感激专家的任何指导。
编辑:我修改了原来的帖子,其中说更改新命名空间中的根也会更改父命名空间中的根。我无法再重现这个。但我关于仅使用该--mount-proc
选项而不使用-m
with来创建新的 MNT 命名空间的问题unshare
仍然存在。
答案1
man unshare
--mount-proc
提及的描述
它还意味着创建一个新的挂载命名空间,因为
/proc
否则挂载会弄乱系统上的现有程序。
因此实际上--mount-proc
意味着-m
,以及您所看到的所有后果。这没什么不同,它是一个新的、私有的挂载命名空间。
该-m
选项本身仍然有用,因为新的挂载命名空间在没有/proc
.