chroot en los
sistemas operativos derivados de
Unix, es una operación que invoca un proceso, cambiando para este y sus hijos el
directorio raíz del sistema. "chroot" puede referirse a la
llamada de sistema chroot(2) o al programa ejecutable
chroot(8). Comúnmente, el entorno virtual creado por chroot a partir de la nueva raíz del sistema se conoce como "jaula chroot".
El sistema chroot fue introducido por
Bill Joy el
18 de marzo de
1982 (17 meses antes de que
BSD 4.2 fuera publicado) para probar su sistema de instalación y construcción.
Al usar "chroot" para invocar un proceso, se impedirá al mismo y a sus procesos hijos acceder por su nombre a ningún fichero que esté por encima del nuevo directorio raíz. Esto es entendido a menudo como un dispositivo de seguridad, ya que en teoría crea una zona segura para ejecutar un programa que provoca desconfianza, no está probado, o de alguna forma puede presentar un comportamiento peligroso para la integridad del sistema. Sin embargo, cabe señalar que las jaulas chroot no son tan seguras como otro tipo de jaulas o la
virtualización.
Y ahora la pregunta sería... ¿y en qué nos podría ayudar chroot para restablecer nuestra contraseña?. Pues bien, de lo que se trata es primero ser root de nuestro PC. Una vez somos root, evidentemente ya tenemos acceso a las herramientas para cambiar contraseñas. Cuando cambiamos contraseñas, lo hacemos mediante el comando passwd, que lo que hace es leerlas y grabarlas en disco. Así pues, si arrancamos la máquina con un LiveCD ya tendremos root en esa máquina. Lo malo es que el sistema de archivos con el que arranca, evidentemente, está en memoria y no es donde realmente están las contraseñas, sino que están en el disco duro. Así pues, chroot nos ofrece la posibilidad de "cambiar" nuestra raíz del sistema de archivos (la del LiveCD) por otro sistema de archivos (la de la partición en donde se encuentran las contraseñas). Si miramos el esquema de arriba puede que entendamos mejor el cambio de sistema de archivos. Arriba de todo tenemos / (root) pero luego de hacer el chroot convertimos /mnt en nuestro nuevo / root.
De acuerdo, ahora que vemos todas las herramientas que usaremos (LiveCD, passwd, mount, chroot) hagamos el procedimiento paso a paso (cada uno que lo adecue a su escenario):
Insertamos en LiveCD de 32 o 64bits. No hace falta que sea la misma distribución, pero si que si el sistema en donde estan las contraseñas es 32bits o 64bits, el LiveCD sea de los mismos bits.
Una vez arrancado el sistema LiveCD, abrimos un terminal y escribimos
sudo -s
Con esto seremos ya root de la maquina. Crearemos una carpeta en donde montaremos la partición de nuestro disco duro en donde se encuentran las contraseñas (no montes la /boot o la swap!). Imaginemos que la partición que buscamos es la /dev/sda2 .
mkdir /mnt/recuperar
mount /dev/sda2 /mnt/recuperar
Pues bien, ahora ya tenemos el sistema de archivos del PC montando como una carpeta del sistema de archivos del LiveCD. Ahora toca hacer el cambiazo:
chroot /mnt/recuperar
Ya lo tenemos cambiado. Ahora nuestro / (root), es el de la partición de nuestro disco duro. Ahora toca cambiar la contraseña, que lo hacemos como se hace habitualmente.
passwd
Como somos root, no nos preguntará por nuestra anterior contraseña. Si por el contrario queremos cambiar la contraseña de otro usuario que no sea el root deberemos mandarlo por parámetro:
passwd user
Con esto ya habremos cambiado la contraseña. Ahora salimos del chroot mediante exit y desmontamos la partición:
exit
umount /mnt/recuperar
Ahora ya podemos apagar el sistema y arrancar con normalidad y con la contraseña restablecida.