我目前正在寻找一些示例来理解 linux 中的 CLONE_NEWNS,所以我做了以下实验:
在 shell1 中:
$ mkdir mnt
$ sudo unshare -m /bin/bash
# mount /dev/sda5 mnt/
# ls mnt
lost+found
如在 shell2 中:
$ ls mnt
lost+found
我期望 shell2 中的输出应该是空的,因为 CLONE_NEWNS 将创建一个新的挂载命名空间,如文档所述。
首先,我认为孩子的命名空间挂载会传播到父母的,所以我在父母身上挂载,孩子也看到了挂载!
然后,我从同一个父级创建两个单独的子命名空间,安装在一个子级中也会影响另一个子级。
我很困惑。
附言。在我在 shell1 中的第一个实验中:
# readlink /proc/$$/ns/mnt
mnt:[4026532353]
在 shell2 中:
$ readlink /proc/$$/ns/mnt
mnt:[4026531840]
显然,它们位于不同的挂载命名空间中。