# Problème avec chroot



## thomzz (18 Août 2004)

Salut !

Alors voilà mon problème, je voudrai utiliser chroot histoire de voir à quoi ça ressemble, j'ai donc créer un dossier dans lequel j'ai deux sous dossiers

bin - avec les executables bash et ls
usr/lib - avec les bibliothèques nécessaires à bash et ls (otool -L donne /usr/lib/libncurses.5.dylib (compatibility version 5.0.0, current version 5.0.0) et /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 71.0.0) pour ls et pareil pour bash)

mais quand je fait

$sudo chroot .

j'obtient :

Illegal instruction

Merci
A+


----------



## koba (18 Août 2004)

sudo chroot ? Heu kezako ?
 Sans rire sudo permet de changer d'utilisateurs non ?
 chroot quant à lui permet de changer le répertoire racine.
 Un sudo chroot ne fonctionnera que si tu as un utilisateur chroot mais je ne pense pas que tu veuille aboutir à un changerment d'utilisateur.
 Je te conseille donc de faire chroot /dossier [/bin/$shell] (par defaut il me semble que c'est sh)


----------



## kabutop (18 Août 2004)

héhé 
Je viens de reussir.

Explication : 
J'avais également le même message que toi :

```
cixi:~/test pouet$ sudo chroot .
Illegal instruction
```
Donc moi pas comprendre... moi chercher explication :

```
cixi:~/test pouet$ sudo ktrace chroot .
Illegal instruction
```
.... puis ...

```
cixi:~/test pouet$ sudo kdump -f ktrace.out
[...]
  7823 chroot   NAMI  "/bin/bash"
  7823 chroot   NAMI  "/usr/lib/dyld"
  7823 chroot   RET   execve -1 errno 2 No such file or directory
  7823 chroot   PSIG  SIGILL SIG_DFL
```
Donc il manque /usr/lib/dyld !
On approche de la fin :


```
cixi:~/test pouet$ cp /usr/lib/dyld usr/lib/
cixi:~/test pouet$ sudo chroot .
dyld: /bin/bash can't open library: /usr/lib/system/libmathCommon.A.dylib  (No such file or directory, errno = 2)
Trace/BPT trap
cixi:~/test pouet$ mkdir usr/lib/system
cixi:~/test pouet$ cp /usr/lib/system/libmathCommon.A.dylib usr/lib/system/
cixi:~/test pouet$ sudo chroot .
bash-2.05b#
```

Voilou...   
A+

PS : ceci dit au passage... faire un chroot en root... hum c pas top  mais bon.


----------



## thomzz (19 Août 2004)

koba, tu dois confondre avec su, sudo c'est pour passer superutilisateur pendant quelques minutes.

kabutop, j'essaie ça ce soir !

Merci de vos réponses !


----------



## koba (19 Août 2004)

Oui en effet, je n'utilise jamais sudo, j'avais confondu avec su. Mais si tu fais un chroot sans donner d'arguments ça sert à quoi ?


----------



## kabutop (19 Août 2004)

"La commande chroot permet de lancer un programme en restreignant ses accès
disques à une sous arborescence. En fait pour le processus, la racine du
disque est la racine de l'arborescence dans laquelle il a été restreint."

Une précision sur ce que je disais plus haut. En fait chroot doit être lancé en root mais les process qui tournent à l'interieur de la "cage" doivent eux, ne pas tourner en root. Sinon ils ont la possibilité de sortir de cet environnement sécurisé.

cf http://www.hsc.fr/ressources/breves/chroot.html.fr


----------



## tatouille (19 Août 2004)

si tu fais un server ftp fais gaffe utilises plutot proftpd pour gerer un chroot interne

commentaire pour "ca sert a quoi les commandes" : koba 
tu ouvres ton terminal et tu tapes man chroot (change root : change de racine ) , man sudo ( super user do : super utilisateur fait ) ?

 

ta lib system est liée au dyld object ( dynamic link editor --> man dyld   )


----------



## thomzz (19 Août 2004)

Ca marche nickel !

Mais c'est juste pour savoir comment marche chroot, pas de 'chrooting ftp' pour l'instant 

Merci de vos réponses.
A+


----------



## tatouille (20 Août 2004)

thomzz a dit:
			
		

> Ca marche nickel !
> 
> Mais c'est juste pour savoir comment marche chroot, pas de 'chrooting ftp' pour l'instant
> 
> ...



Tu pourras essayer donc des trucs marrants   

Pour la notion de chroot : 
[illustration]

Vous avez votre système sur [Macintosh HD] ou / racine sytème
pour des raisons obscures ma machine se compose ainsi :

/ (mac OSX)
/Volumes/Darwin_6
/Volumes/Darwin_7
/Volumes/Darwin_dev

j'ai besoin par exemple de travailler sur Darwin_6 
pour tester la compatibilité d'un progiciel

lors du démarrage au lieu de monter mon système par defaut sur / (the mount point)

je fais un chroot de base
je monte donc mon système /Volumes/Darwin_6 comme root (the new mount point)

voila cela permet d'avoir différents sytèmes
en volume sur la même machine

tout cela s'automatise bien sûr

ps: vous pouvez faire ca  aussi  avec des dists GNU/Linux :
/Volumes/GNUDebian

[fin d'illustration]


----------

