如果您不在chroot环境中且根文件系统为ext2/ext3/ext4,则/的inode始终为2。您可以使用以下命令来检查:
stat -c %i /
或者
ls -id /
很有趣,但让我们尝试找到chroot目录的路径。询问stat
/位于哪个设备上:
stat -c %04D /
设备的第一个字节表示设备的主要版本,最后一个字节表示次要版本。例如,0802表示主要版本为8,次要版本为1。如果您在/dev中进行检查,您会看到该设备是/dev/sda2。如果您是root用户,您可以直接在chroot中创建相应的设备:
mknode /tmp/root_dev b 8 1
现在,让我们找到与我们的chroot相关联的inode。 debugfs允许使用inode号列出文件的内容。例如,ls -id /
返回了923960:
sudo debugfs /tmp/root_dev -R 'ls <923960>'
923960 (12) . 915821 (32) .. 5636100 (12) var
5636319 (12) lib 5636322 (12) usr 5636345 (12) tmp
5636346 (12) sys 5636347 (12) sbin 5636348 (12) run
5636349 (12) root 5636350 (12) proc 5636351 (12) mnt
5636352 (12) home 5636353 (12) dev 5636354 (12) boot
5636355 (12) bin 5636356 (12) etc 5638152 (16) selinux
5769366 (12) srv 5769367 (12) opt 5769375 (3832) media
有趣的信息是 ..
目录项的 inode 编号: 915821。我可以查看它的内容:
sudo debugfs /tmp/root_dev -R 'ls <915821>'
915821 (12) . 2 (12) .. 923960 (20) debian-jail
923961 (4052) other-jail
目录名为debian-jail
的inode为923960。因此我chroot目录的最后一个组成部分是debian-jail
。现在让我们看一下父目录(inode 2):
sudo debugfs /tmp/root_dev -R 'ls <2>'
2 (12) . 2 (12) .. 11 (20) lost+found 1046529 (12) home
130817 (12) etc 784897 (16) media 3603 (20) initrd.img
261633 (12) var 654081 (12) usr 392449 (12) sys 392450 (12) lib
784898 (12) root 915715 (12) sbin 1046530 (12) tmp
1046531 (12) bin 784899 (12) dev 392451 (12) mnt
915716 (12) run 12 (12) proc 1046532 (12) boot 13 (16) lib64
784945 (12) srv 915821 (12) opt 3604 (3796) vmlinuz
名为opt
的目录具有inode 915821,inode 2是文件系统的根。所以我的chroot目录是/opt/debian-jail
。当然,/dev/sda1
可能已经挂载在另一个文件系统上。您需要检查一下(使用lsof或直接从/proc
中获取信息)。
ischroot
。参见:https://manpages.debian.org/jessie/debianutils/ischroot.1.en.html - thom_nic