如何在Linux名称空间中执行chroot?
在阅读了有关Linux名称空间的信息后,我感到它们是chroot的替代品,其中包括许多其他功能。例如,在本文中: [...]命名空间的其他用途包括将进程的chroot()样式隔离到单个目录层次结构的一部分。 但是,当我克隆装载名称空间时,例如使用以下命令,我仍然可以看到整个原始根树。 unshare --mount -- /bin/bash 我知道我现在可以在新的名称空间中执行与原始名称空间不共享的其他挂载,因此可以提供隔离,但是它仍然是相同的根,例如/etc,两个名称空间仍然相同。我仍然需要chroot更改根目录还是有替代方法? 我原以为这个问题会提供答案,但是答案仅chroot再次使用。 编辑#1 现在有提到的已删除评论pivot_root。由于这实际上是的一部分linux/fs/namespace.c,因此实际上是名称空间实现的一部分。这表明只能使用unshare和更改根目录mount是不可能的,但是名称空间提供了自己的-更聪明的版本chroot。chroot即使在阅读了源代码之后(例如在安全性或更好的隔离性的意义上),我仍然没有获得使这种方法与根本上有所不同的这种方法的主要思想。 编辑#2 这不是这个问题的重复。执行完答案中的所有命令后,我有单独的/tmp/tmp.vyM9IwnKuY(或类似的文件),但是根目录仍然相同!