Le 4 mai 2009 19:24, Gilles Mocellin
<gilles.mocellin@free.fr> a écrit :
Le Monday 04 May 2009 02:12:10 kabore yacouba, vous avez écrit :
> Bonjour la communauté,
Salut, mais là, tu n'as écrit qu'à moi !
> je voudrai savoir ce que c'est un chroot, ou chrooter un programme ???
chroot = change root.
La commande chroot permet de lancer un programme dans un environnement fichiers
dont la racine a été changée.
Par exemple :
Sur un système on a une arborescence comme ceci :
/
/usr
/var
...
/test
/test/usr
/test/var
...
Le contenu de /test est une copie d'un système complet, éventuellement dans
une autre version.
Si tu lance le programme /test/usr/bin/programme, il y a de fortes chances
qu'il utilise des librairies dynamiques partagée.
Il les cherchera dans /usr/lib/...
Pareil pour des fichiers de configuration dans /etc, des données dans /var/lib
ou /usr/share...
Tu n'exécutera donc pas vraiment ce que tu penses.
Pour que le programme utilise les fichiers dans /test/etc /etc/usr/share
/test/usr/lib, il suffit de lui faire croire que la racine "/" c'est /test.
et voilà, on lance :
$ chroot /test /usr/bin/programme.
Si le programme en question est un shell, ça donne l'impression d'être sur un
autre système, tous les fichiers en dessous de / sont différents.
Exemple :
On crée un fichier repère dans /test :
$ touch /test/dans-test
On chroot
$ chroot /test
Par defaut, si on ne donne pas de programme, ça lance le shell de
l'utilisateur (/bin/bash)
Et miracle :
$ ls -l /
...
/dans-test
...
Le fichier "dans-test" est sous la racine.
Et il n'y a pas de répertoire /test.
On ressort
$ exit
$ ls -l /test
...
dans-test
...
dans-test est dans /test ;-)
Voilà, j'espère que c'est assez claire.