chroot es un comando UNIX que permite ejecutar un proceso bajo un directorio raíz simulado, de manera que el proceso no puede acceder a archivos fuera de ese directorio. Se utiliza principalmente para dos cosas:
- para probar programas sospechosos o peligrosos en un entorno seguro (por ejemplo, para instalar unstable en una máquina stable sin interferir con el entorno principal).
- para enjaular (hacer chroot) un servicio de red (por ejemplo un servidor web), de manera que quede limitado el entorno de ese servicio y acceda sólo a lo que debe, evitando que escale accesos.
Equivalencias en Windows: MS-Virtual Server.
Cómo funciona chroot
Veamos cómo funciona chroot. Cuando ejecutamos chroot, cuya sintaxis es:
# chroot directorio_chroot comando |
chroot lanza /directorio_chroot/comando haciéndole creer que directorio_chroot es el directorio raíz "/". Por ejemplo, si ejecutamos:
# chroot /usr/local/chroot ls /tmp |
se ejecuta /bin/ls del entorno chroot (/usr/local/chroot/bin/ls) y obtendremos el listado del directorio /tmp del entorno chroot (/usr/local/chroot/tmp).
Al utilizar chroot debemos tener en cuenta varias cosas:
- chroot sólo lo puede ejecutar root.
- el directorio directorio_chroot debe incluir la estructura de directorios propia de un sistema UNIX así como todos los archivos y librerías necesarios para que se ejecute comando, incluyendo el propio comando.
- una vez que entremos en el entorno chroot, sólo estarán disponibles los archivos que cuelgan de ese directorio. En cambio desde el entorno principal son accesibles todos los ficheros del entorno chroot.
- los puertos son los mismos en el entorno principal y en el entorno chroot, de manera que si en el entorno principal tenemos un servidor web escuchando en el puerto 80 y lanzamos otro en el entorno chroot, obtendremos un error de Puerto ya en uso.
- si omitimos comando se ejecuta /bin/bash y root obtendrá un shell (realmente se ejecuta /directorio_chroot/bin/bash).
Instalación del entorno chroot
Para instalar el entorno chroot usaremos debootstrap (paquete debootstrap):
- en primer lugar, crearemos el directorio para el entorno chroot, por ejemplo:
# mkdir /usr/local/chroot
- aunque nuestra intención sea instalar unstable, es preferible
instalar primero stable y luego actualizar a unstable. Para seleccionar
la versión Debian a instalar se utiliza el nombre concreto de la versión
(etch), no el nombre genérico (stable), de modo que ejecutaremos:
# debootstrap etch /usr/local/chroot
Puede incluirse como parámetro el mirror, por ejemplo:
# debootstrap etch /usr/local/chroot http://ftp.es.debian.org/debian
- en el entorno chroot montaremos el directorio virtual proc:
# mount proc /usr/local/chroot/proc
- para que el sistema monte el directorio virtual proc dentro del entorno chroot
al iniciar, añadiremos al archivo /etc/fstab del entorno principal la línea:
# File_system Mount_point Type Options Dump Pass proc /usr/local/chroot/proc proc none 0 0
- copiaremos el archivo /etc/hosts del entorno principal al entorno chroot:
# cp /etc/hosts /usr/local/chroot/etc/hosts
En este punto, ya tenemos un entorno chroot usable.
Instalar programas en el entorno chroot
Lo que se instala con debootstrap es un sistema básico, con pocos paquetes, por lo que normalmente hará falta instalar más cosas en el entorno chroot. Para ello, haremos lo mismo que en el entorno principal:
# apt-get install <paquete> |
Previamente configuraremos las fuentes de software editando el archivo /etc/apt/sources.list del entorno chroot.
Usar chroot
Para obtener un shell chroot haremos:
# chroot /usr/local/chroot |
y obtendremos un shell con el usuario root. El programa que se ejecuta realmente es /usr/local/chroot/bin/bash, y cree que /usr/local/chroot es el directorio raíz "/".
Para salir del shell chroot haremos:
# exit |
Usar las X con chroot
Podemos instalar las X en el entorno chroot y ejecutarlas en un terminal libre:
- entraremos en el entorno chroot:
# chroot /usr/local/chroot
- instalaremos el entorno gráfico:
# apt-get install x-window-system-core gdm icewm icewm-themes iceme
- editaremos el archivo /etc/gdm/gdm.conf del entorno chroot para que se inicie en la
terminal tty8 (FirstVT=8) y crearemos un usuario normal para que gdm
nos deje iniciar sesión gráfica. Para lanzar las X ejecutaremos:
# /etc/init.d/gdm start
Podremos conmutar entre las X del entorno chroot y las X del entorno principal usando <Ctrl+Alt+F7> y <Ctrl+Alt+F8>.
Que buena info, pero oye cuando le digo
debootstrap etch /usr/local/chroot http://ftp.es.debian.org/debian
el me instala todos los paquetes del repo o hasta que punto va esa instalación?
[...] Se pueden ejecutar ejecutar los scripts sin firmar: 1- en una jaula chroot 2- directamente en una máquina virtual, con Virtualbox [...]
wow que buena vengo de windows considerando la caja de arena como lo maximo y resulta que linux tiene una propia desde hace años,tengo que ver como funciona esto.y cuanto se parece.
es posible ejecutar un navegador mediante chroot con entorno grafico?
y si me descargo algo como chroot siempre podre copiarlo y pegarlo en cualquier otra parte no?
existe algo (un script comando chrootcopia”….) que haga copias de mi sistema principal al sistema chroot en funcion de lo que necesite?
ie: si como chroot llamo a firefox-bin y este necesite algun recurso/archivo que no este en directorio chroot pero si en el principal,vaya ahi lo copie (solo lectura nada de permisos para escribir) y se lo coppie en la misma ruuta correspondeinte en directorio chroot?
eso seria perfecto para mi.
siento explayarme tanto pero es que no tengo n.p.i
Pingback:Configuración usuarios locais