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
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