Descubre cómo usar chroot para recuperar sistemas, aislar procesos y ejecutar comandos en entornos controlados.


El comando chroot es una herramienta clásica y poderosa en GNU/Linux que permite ejecutar procesos dentro de un directorio tratado como si fuera la raíz (/) del sistema. Aunque suele pasar desapercibido para muchos administradores, es una utilidad imprescindible para tareas de rescate, reparación de sistemas, pruebas controladas o aislamientos muy simples sin recurrir a contenedores.

¿Para qué se usa chroot?

chroot (change root) se utiliza principalmente para:

  • 🔧 Recuperar sistemas dañados desde un entorno live, montando la partición afectada y accediendo a ella como si fuese el sistema real.
  • 🛠️ Reinstalar bootloaders (como GRUB) en un sistema que no arranca.
  • 🔐 Confinar procesos en un espacio controlado (sandbox muy básico).
  • 🧪 Probar software dentro de un entorno aislado.
  • 📦 Construir entornos mínimos (por ejemplo, durante la creación de imágenes o sistemas rootfs).
  • 👤 Simular entornos de login o shells restringidos para usuarios.

A diferencia de tecnologías como LXC, Docker o systemd-nspawn, chroot no aísla recursos del kernel como red o procesos. Es una jaula mínima, pero extremadamente útil.

Sintaxis básica

La sintaxis principal es:

chroot [opciones] <nuevo_root> [comando] [args]

Donde:

  • <nuevo_root> → Directorio que se tratará como nueva raíz /.

Las opciones más usadas:

  • [comando] → Programa que quieres ejecutar dentro del nuevo entorno (por defecto /bin/sh).
  • [args] → Argumentos opcionales para el comando.
Opción Descripción
--userspec=<usuario:grupo> Ejecuta el comando con un usuario y grupo concretos.
--groups=<g1,g2> Define grupos adicionales.
--skip-chdir No cambia al directorio / dentro del nuevo root.
--help Muestra ayuda del comando.

Ejemplos prácticos

A continuación os dejamos algunos ejemplos interesantes del comando.

Entrar a un sistema desde un LiveCD

Con esto ya estás "dentro" del sistema como si hubieras iniciado desde él.

mount /dev/sda2 /mnt
mount -t proc /proc /mnt/proc
mount --rbind /sys /mnt/sys
mount --rbind /dev /mnt/dev

chroot /mnt

Ejecutar un comando concreto dentro del chroot

chroot /mnt /bin/bash

o directamente:

chroot /mnt ls -la /root

Crear un entorno mínimo y entrar en él

Crear estructura:

mkdir -p /home/t3rr0rz0n3/jail/{bin,lib,lib64}
cp /bin/bash /home/t3rr0rz0n3/jail/bin/

Copiar librerías necesarias:

ldd /bin/bash

Copiarlas a mano (ejemplo):

cp /lib/x86_64-linux-gnu/libtinfo.so.6 /home/t3rr0rz0n3/jail/lib/
cp /lib/x86_64-linux-gnu/libc.so.6 /home/t3rr0rz0n3/jail/lib/

Entrar en el chroot:

chroot /home/t3rr0rz0n3/jail /bin/bash

Conclusión

chroot es una de esas herramientas clásicas de GNU/Linux que, pese a su simplicidad, sigue siendo fundamental para tareas de administración, recuperación y creación de entornos controlados. Su capacidad para "trasladar" procesos a un nuevo root lo convierte en un aliado imprescindible en situaciones de emergencia, en la reparación de sistemas y en flujos de trabajo donde se requiere un entorno limpio y aislado sin recurrir a contenedores complejos. Dominar su uso permite a cualquier sysadmin ampliar su caja de herramientas y entender mejor cómo funciona la jerarquía del sistema y sus dependencias.

¿Buscas otro comando?

¡Revisa nuestro "Diccionario de comandos para GNU/Linux"!

Diccionario de comandos para GNU/Linux

Más sobre ./voidNull

Haz que cada palabra cuente: tu donación nos inspira a seguir creando contenido. Accede al apartado de Donación para hacer tu aportación