Si no está en un chroot, el nodo-i de/será siempre 2. Es posible comprobar que el uso de
stat -c %i/
o
ls -id/
Interresting, pero vamos a tratar de encontrar camino de directorio chroot. Pregunta a stat
de qué dispositivo/se encuentra:
stat -c %04D/
primer byte es importante de dispositivo y no sea byte es menor. Por ejemplo, 0802, significa mayor 8, menor 1. Si marca en/dev, verá que este dispositivo es/dev/sda2. Si no, el administrador puede crear directamente dispositivo correspondong en su jaula:
mknode /tmp/root_dev b 8 1
Ahora, vamos a encontrar inodo asociado a nuestra chroot. debugfs permite listar contenidos de archivos usando números de inodo. Para exemple, ls -id /
regresaron 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
Interesante información es i-nodo de entrada ..
: 915821. puedo pedir su contenido:
sudo debugfs /tmp/root_dev -R 'ls <915821>'
915821 (12) . 2 (12) .. 923960 (20) debian-jail
923961 (4052) other-jail
Directory denominado debian-jail
tiene ínodo 923960. Así último componente de mi chroot dir es debian-jail
. Veamos directorio padre (i-nodo 2) ahora:
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
Directory denominado opt
tiene inodo 915821 y i-nodo 2 es la raíz del sistema de archivos. Entonces mi directorio chroot es /opt/debian-jail
. Claro, /dev/sda1
puede estar montado en otro sistema de archivos. Debe verificarlo (use lsof o información de selección directa /proc
).
Ver también [¿Cómo sé si estoy corriendo en un chroot?] (Http://unix.stackexchange.com/questions/14345/how-do-i-tell-im-running-in-a- chroot/24248 # 24248) – Gilles
No es totalmente portátil (y solo funciona como suid) pero los sistemas basados en Debian tienen 'ischroot' instalado por defecto. Ver: https://manpages.debian.org/jessie/debianutils/ischroot.1.en.html –