您能解释一下这个“chroot”/tmp 目录的创建吗?

lbr*_*dao 5 linux chroot mount tmp

在下面的链接文章中,他们解释了如何创建“chroot”/tmp 目录。我对他们的所作所为有点困惑。有人能解释一下以下命令的作用吗?

Noexec 和 /tmp 故障排除

1. # mkdir -p /root/chroot /root/tmp 
2. # mount --bind / /root/chroot 
3. # mount --bind /root/tmp /root/chroot/tmp
4. # chroot /root/chroot
Run Code Online (Sandbox Code Playgroud)

在第一步中,为什么他们创建/root/tmp而不是/root/chroot/tmp

第一个安装命令会影响第二个安装命令吗?第二步,他们将新目录/root/chroot绑定到根目录。这是否意味着第三步/root/tmp实际上指向/root/chroot/root/tmp/root/chroot/tmp从哪里来?这就是我感到困惑的部分。

这背后的逻辑是什么?

gar*_*Red 2

在步骤 2 中,您将绑定安装//root/chroot.

如果你创建步骤2.5,ls /root/chroot你会发现列出的所有目录/;包括系统的/tmp目录。

如果您touch /root/chroot/test会看到这test也在 的输出中ls /。如果您rm /test会注意到它也从/root/chroot/. 所以//root/chroot/是完全相同的地方。

如果您想更详细地查看,请运行stat /,然后stat /root/chroot您会发现两者都返回相同的Inode. AnInode是一种数据结构,引用磁盘上的特定文件/目录。由于它们都返回相同的内容Inode,因此两个路径都指向完全相同的目录。

因此,第 3 步将目录挂载到已绑定挂载的/root/tmp系统目录上。/tmp/root/chroot

当您执行步骤 4 时,您将使用in 目录而不是系统范围的目录chroot进入 chroot 状态。这样,chroot 就不会与系统上的每个其他用户共享 a。//tmp/root/tmp/tmp