Journal chroot: comment sortir de prison à l'aide d'un complice

Posté par  (site web personnel) .
Étiquettes : aucune
0
30
août
2003
chroot permet de créer une "prison" pour un processus en changeant son répertoire racine.

Ainsi, en tapant "chroot /chemin /bin/bash", chroot lance le programme /bin/bash en lui indiquant sa racine: /chemin.

Le programme chrooté ne peut donc pas voir les fichiers à l'extérieur de "sa" racine.

Voici comment "sortir" le processus de sa prison à l'aide d'un complice qui se trouve en dehors de la prison.

Créer une prison, c'est à dire un pseudo répertoire racine avec /bin et /lib dedans.
Créer deux fifo:
$ mkfifo fifo1
$ mkfifo fifo2

Ouvrir un terminal dans un environnement normal (pas chrooté). Ce sera notre complice.
Placez vous à la racine de l'environnement chrooté.
Puis tapez:
$ bash < fifo > fifo2
Et laissez le complice en place.

Maintenant, voici comment notre prisonnier peut "sortir".

Ouvrir un autre terminal et aller dans l'environnement chrooté:
$ chroot `pwd` /bin/bash

Vous êtes le prisonnier. Puis taper:
$ cat fifo2 &
$ cat > fifo

Et à partir de là, taper des commandes comme "ls -l /" pour voir... :)
Toute les commandes sont en fait éxécutées par le complice. Le prisonnier voit le résultat des commandes comme s'il n'était pas prisonnier.

Seul problème: le prisonnier ne voit pas le prompt. Tout se passe comme si on avait pour prompt une chaine vide.

Pour résoudre le problème, il fallait ajouter l'option -i:
$ bash -i < fifo > fifo2

Cette fois, le prompt est affiché... mais sur le terminal du complice!!! Le résultat des commandes passe quand même dans le fifo et est donc affiché dans le terminal du prisonnier.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.