chroot "jail": ¿qué es y cómo lo uso?

He escuchado / leído mucho sobre la cárcel chroot en Linux, pero nunca la he usado (uso Fedora día a día), entonces, ¿qué es una "cárcel" chroot? ¿Cuándo y por qué podría usarlo / no usarlo y hay algo más que deba saber? ¿Cómo podría crear una?

Una cárcel chroot es una forma de aislar un process y sus hijos del rest del sistema. Solo debe usarse para processs que no se ejecutan como root, ya que los usuarios root pueden salir de la cárcel muy fácilmente.

La idea es crear un tree de directorys donde copie o vincule todos los files del sistema necesarios para que se ejecute un process. A continuación, utiliza la llamada al sistema chroot() para cambiar el directory raíz a la base de este nuevo tree e iniciar el process que se ejecuta en ese entorno chroot. Como en realidad no puede hacer reference a routes fuera de la raíz modificada, no puede realizar operaciones (de lectura / escritura, etc.) maliciosamente en esas ubicaciones.

En Linux, usar los assemblys bind es una excelente manera de poblar el tree chroot. Utilizando eso, puede extraer carpetas como / lib y / usr / lib mientras no está entrando / user, por ejemplo. Simplemente enlace los treees de directorys que desee a los directorys que cree en el directory de la cárcel.

"chroot jail" es un nombre inapropiado que realmente debería desaparecer, pero la gente sigue usándolo. chroot es una herramienta que le permite simular un directory en su sistema de files como la raíz del sistema de files. Eso significa que puede tener una estructura de carpetas como:

 -- foo -- bar -- baz -- bazz 

Si chroot foo y haces ls / , verás:

 -- bar -- baz 

En lo que concierne a ls (y cualquier otra herramienta que ejecute), esos son los únicos directorys en el sistema de files. La razón por la cual "cárcel" es un nombre inapropiado es que chroot no tiene la intención de forzar a un progtwig a quedarse en ese sistema de files simulado; un progtwig que sabe que está en una "cárcel" chroot puede escaping fácilmente, por lo que no debe usar chroot como medida de security para evitar que un progtwig modifique files fuera de su sistema de files simulado

Básicamente, solo estás cambiando el directory raíz de tu entorno. Asi que

 / 

se convierte

 /some-jail/ (or whatever directory you want) 

Cuando una aplicación accede / obtendrá / some-jail /. Además, la aplicación no puede salir de / some-jail / para que sepa que no accederá a ninguna otra cosa en su máquina. Es una forma muy simple de decir 'oye, solo puedes acceder a estas cosas que te estoy dando, y no puedes acceder a ninguna otra cosa en el sistema.

"¿Cuándo y por qué podría usarlo?"

Un uso es probar scripts (time de arranque y otros) que hacen references de routes absolutas, o que ejecutan commands que quizás desee interceptar y registrar (y quizás no-hacerlos), en un entorno donde no le gustaría que esos commands en realidad operar en su entorno de ejecución.

Por ejemplo, tengo un dispositivo embedded que ejecuta Linux, me gustaría comprobar el funcionamiento de algunos bash sin a) ejecutarlo en el dispositivo real (ya que tengo mejores herramientas en mi escritorio y no quiero bloquear el dispositivo) b) funcionando de verdad en mi escritorio (ya que no quiero que mi sistema de escritorio se estropee)

Además, puede descubrir qué commands u otros files de script se utilizan, ya que la ejecución se cerrará con un error cada vez que intente ejecutar un command o script de shell que no esté presente en la "cárcel de chroot".

(Por supuesto, para ser todo un cerdo, podrías correr dentro de QEMU o una VM, pero eso implicaría crear una image de VM, etc. – mucho más trabajo)