0
(0)

Chroot es una utilidad de Linux/Unix que puede cambiar o modificar el sistema de archivos raíz. Con la ayuda del chroot comando, puede crear fácilmente un sistema de archivos aislado dentro de su sistema de archivos principal. Chroot es especialmente útil para separar su entorno laboral y doméstico o si desea un entorno de prueba para probar el software de forma aislada.

Diferencia entre Chroot y máquina virtual

A primera vista, puede pensar en chroot como algo similar a una máquina virtual o un sistema en contenedores como docker. Es algo similar, pero chroot es una solución mucho más ligera que una máquina virtual. La máquina virtual necesita un hipervisor para instalar y trabajar en un kernel separado, que es diferente de la máquina host. A diferencia de una máquina virtual, chroot comparte el mismo núcleo y procesos, pero crea una cárcel en el sistema de archivos. Dentro de la cárcel, no es posible mirar hacia afuera sin permiso de root. Por lo tanto, el sistema de archivos aislado también se llama chroot jail.

Diferentes casos de uso de Chroot

  1. Entorno de compilación aislado en canalización de CI/CD: Chroot se utiliza para crear un entorno de compilación aislado para aplicaciones en canalización de CI/CD. Esto ayuda a construir su aplicación con dependencias únicas y está completamente aislado de todos los demás entornos de construcción para eliminar posibles conflictos.
  2. Entorno de desarrollo y pruebas separado: a menudo, el software que funciona en la máquina del desarrollador no funciona en el dispositivo del usuario final. Esto se debe a que el desarrollador tiene muchas herramientas y dependencias instaladas en su sistema. La gente normal no tiene todas esas dependencias instaladas en sus máquinas. Para probar el software, si se ejecutará en todos los dispositivos, el desarrollador o probador puede crear fácilmente un entorno simple y sencillo usando chroot para probar su software.
  3. Reducir el riesgo para el desarrollador: Como desarrollador, a menudo creamos algunos programas que interactúan con los archivos de nuestro sistema sin un entorno de pruebas adecuado. Por lo tanto, si cometemos un error, nuestro software puede borrar fácilmente nuestros datos importantes de nuestro dispositivo. Para reducir este tipo de riesgo, el desarrollador a menudo usa chroot para crear un nuevo entorno de trabajo para reducir el riesgo de perder datos.
  4. Una versión diferente del mismo software: A veces es necesario instalar una versión muy antigua o muy reciente de un software o una dependencia con fines de desarrollo. Pero el uso de una dependencia tan conflictiva puede estropear su sistema. Esta situación se puede superar fácilmente usando chroot jail.
  5. Arreglar un sistema roto: Si tiene un sistema roto, puede repararlo fácilmente con la ayuda de chroot. Simplemente inicie un entorno Linux en vivo en el dispositivo y monte el sistema de archivos. Usando este punto de montaje, puede ejecutar diferentes comandos para solucionar su problema. Esto se discute más adelante en este tutorial.
  6. Ejecución segura de un servidor FTP: FTP significa protocolo de transferencia de archivos. Ejecutar un servidor FTP le da el control para compartir solo los archivos que desea. Por lo tanto, ningún par remoto puede ver su sistema de archivos host y acceder a ellos.

Creación de un entorno Chroot

Esta es una guía rápida sobre cómo crear un entorno chroot en su sistema. Usted puede obtener información detallada en el arch wiki.

  1. Para crear un entorno chroot, cree un nuevo directorio dentro de su carpeta de inicio. Dentro de esta carpeta, nuestro sistema de archivos aislado estará presente en el futuro. En este tutorial, llamé a la carpeta «mte».
mkdir ~/mte
  1. Estamos creando un entorno Linux mínimo. Instalamos bash como shell dentro del entorno chroot e instalar ls, rmy touch para enumerar, eliminar y crear archivos respectivamente. Vamos a crear los directorios necesarios dentro de nuestro directorio «mte».
cd ~/mte
mkdir bin
mkdir lib
mkdir lib64
  1. Copie los archivos binarios necesarios del directorio «/bin» normal al entorno chroot «~/mte».
cp /bin/bash ~/mte/bin
cp /bin/touch ~/mte/bin
cp /bin/ls ~/mte/bin
cp /bin/rm ~/mte/bin
  1. Copiar los binarios no es suficiente. También tenemos que copiar sus dependencias a la carpeta “mte”. Para conocer las dependencias requeridas, usamos el ldd dominio. Si desea conocer la dependencia de bash, ejecute:
ldd /bin/bash

Obtenemos el siguiente resultado del comando anterior.

Chroot Ldd, autocapturado

  1. Enumerar esas dependencias y copiarlas una por una será minuciosamente lento y aburrido. Por lo tanto, para automatizar este proceso, estamos usando un script bash. Cree un archivo llamado «copydependancy.sh» y escriba estos comandos de shell dentro de él.
#Setting the chroot directory
mte="~/mte"
 
# enter your binary name
echo -e "Please enter your binary name n"
 
#Reading from terminal input
read binaryname
 
# Listing all the dependencies
list="$(ldd /bin/$binaryname | egrep -o '/lib.*.[0-9]')"
 
# Looping through the dependency list
for i in $list; do cp -v --parents "$i" "${mte}"; done

Examinemos lo que hace este script. Al principio, este script de shell solicita el nombre binario, luego toma este nombre binario y encuentra todas las dependencias de ese binario y las guarda dentro de una variable de lista. A continuación, ejecuta un bucle for que se ejecuta en cada elemento de la lista y copia la dependencia de nuestro archivo «/ bin» normal a nuestro directorio chroot «mte».

Guarde este script en otro lugar y consúltelo cuando cree un nuevo entorno chroot.

A continuación, cambie el permiso del script y ejecútelo dentro de la terminal.

chmod +x copydependancy.sh
  1. Como todas las dependencias están instaladas en nuestro sistema, activemos nuestro entorno chroot. El comando chroot estándar se ve así:
chroot [-OPTION] [PATH FOR NEW ROOT] [PATH FOR SERVER]

Pero para cumplir con nuestro propósito, ejecutamos el siguiente comando para activar nuestro entorno chroot.

sudo chroot ~/mte /bin/bash

El comando anterior activa un entorno chroot en el directorio «~/mte» y especifica que se ejecute un shell bash. Puede ver un cambio en el indicador de su terminal y ahora puede usar el touch, rmy ls comandos para crear, eliminar y listar archivos respectivamente.

Para salir del entorno chroot, ejecute el exit dominio.

Si desea eliminar el entorno chroot por completo, elimine el directorio «mte» de su sistema de archivos.

rm -rf ~/mte

Arreglar un cargador de arranque roto usando Chroot

Lo más fascinante de chroot es que puede ingresar a un sistema roto y ejecutar un comando dentro de él. Por lo tanto, al usar chroot, puede instalar fácilmente una actualización crítica para reparar un sistema o reinstalar todo el gestor de arranque para solucionar el problema.

Chroot WikimediaFuente de imagen: fundación wikimedia

Pero para eso, debe tener un entorno Linux en vivo. Cree un USB de arranque descargando un ISO de Linux y arrancando desde el USB. Le brinda un entorno en vivo para trabajar. Monte la partición de su sistema para que funcione con chroot.

sudo mount -t ext4 /dev/sda /mnt

Cambie «/dev/sda» con el nombre de la partición del sistema con el que desea trabajar y deje que el cargador de arranque grub encuentre la información que necesita para solucionar el problema del cargador de arranque.

sudo mount --bind /dev /mnt/dev &&
sudo mount --bind /dev/pts /mnt/dev/pts &&
sudo mount --bind /proc /mnt/proc &&
sudo mount --bind /sys /mnt/sys

Hagamos chroot en el directorio “/mnt” e ingresemos al sistema roto.

sudo chroot /mnt

Instale, verifique y actualice el cargador de arranque grub en su sistema. Asegúrese de utilizar el nombre de unidad adecuado y no copie y pegue estos comandos a ciegas.

grub-install /dev/sda
grub-install --recheck /dev/sda
update-grub

Salga del shell usando el comando de salida mencionado anteriormente. Desvincule los directorios enlazados anteriormente y desmonte el sistema de archivos. Ejecute esos comandos uno tras otro consecutivamente.

sudo umount /mnt/sys &&
sudo umount /mnt/proc &&
sudo umount /mnt/dev/pts &&
sudo umount /mnt/dev &&
sudo umount /mnt

Reinicie su PC y desconecte el USB en vivo. Cuando la computadora arranque, su cargador de arranque grub brillará como nuevo, y todo debería funcionar perfectamente bien.

Preguntas frecuentes

¿Chroot es seguro?

Chroot no implica seguridad. Nunca tuvo la intención de convertirse en uno. Por seguridad, puede usar SELinux. Si coloca a alguien dentro de un directorio chroot, no tiene acceso al sistema de archivos raíz, pero eso no significa que haga que su sistema sea irrompible. Chroot no significa menos seguridad, solo representa la misma cantidad de seguridad que su sistema principal. Nada más y nada menos.

¿Cuáles son las limitaciones de los sistemas Chroot?

Un sistema Chroot no está destinado a proteger contra la manipulación intencional por parte del usuario root. En algunos sistemas, los programas chroot pueden obtener suficientes privilegios para crear su propio entorno chroot y escapar de la cárcel chroot. Chroot no significa aislamiento completo. Por lo general, puede hacer lo que quiera en el espacio de usuario. Puede acceder a dispositivos de hardware y montar y leer cualquier cosa, siempre que no tenga que instalar ningún otro programa, entonces necesitará el privilegio de root que no tiene.

¿Por qué a Chroot se le llama cárcel?

Chroot se llama cárcel, ya que parece que estás dentro de un entorno aislado. Puedes hacer lo que quieras dentro de esta cárcel, pero no puedes salir sin el permiso del usuario root. Además, tiene un suministro limitado de utilidades proporcionadas por el usuario raíz y no puede instalar nada usted mismo. Para todas esas restricciones, se llama chroot jail.

¿Le ha parecido útil este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 0 / 5. Recuento de votos: 0

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.