03.01.2015 Views

Utilisation d'une chroot pour chrooter un shell - Lita

Utilisation d'une chroot pour chrooter un shell - Lita

Utilisation d'une chroot pour chrooter un shell - Lita

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Exercice 4 : Casser la <strong>chroot</strong><br />

1 Peut-on <strong>chroot</strong>er <strong>un</strong> processus lancé dans <strong>un</strong> environnement restreint <br />

On rappelle que <strong>pour</strong> chaque commande à <strong>chroot</strong>er, il faut : (i) savoir où est le fichier de la<br />

commande ; (ii) copier les librairies nécessaires dans l'environnement restreint si elles n’y sont pas<br />

déjà ; (iii) copier le fichier de la commande dans le répertoire bin de cette «prison».<br />

1.1 Placez-vous dans le dossier parent du dossier my<strong>chroot</strong> que nous avons créé la<br />

semaine dernière puis :<br />

$ cp -R my<strong>chroot</strong> waterbuffalo<br />

$ mv waterbuffalo my<strong>chroot</strong><br />

1.2 Copiez la commande /usr/sbin/<strong>chroot</strong> dans my<strong>chroot</strong>/bin ainsi que les<br />

librairies nécessaires à son exécution dans my<strong>chroot</strong>/lib. Puis :<br />

# <strong>chroot</strong> my<strong>chroot</strong> /bin/bash<br />

# <strong>chroot</strong> waterbuffalo<br />

1.3 Quelle est la réponse à la question 1 initiale Sortez de(s) environnement(s)<br />

restreint(s) et revenez au dossier parent de my<strong>chroot</strong>.<br />

2 Un processus peut se <strong>chroot</strong>er lui-même en environnement restreint avec la primitive C<br />

<strong>chroot</strong>.<br />

2.1 Étudiez la page man 2 <strong>chroot</strong> et comparez-la à la page man <strong>chroot</strong>.<br />

2.2 Copiez le code C et exécutez les commandes suivantes :<br />

$ vi <strong>chroot</strong>_cwd.c<br />

#include <br />

#include <br />

int main(int argc, char *argv[]) {<br />

char s[1024];<br />

}<br />

<strong>chroot</strong>(argv[1]);<br />

getcwd(s, 1024);<br />

printf("Répertoire courant: %s\n", s);<br />

execl("/bin/bash", "bash", "-i", 0);<br />

$ gcc <strong>chroot</strong>_cwd.c -o <strong>chroot</strong>_cwd<br />

# ./<strong>chroot</strong>_cwd my<strong>chroot</strong><br />

2.3 Expliquez le résultat obtenu.<br />

2

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!