Je suis un novice chroot essayant de faire une simple prison chroot mais je me cogne la tête contre le même problème maintes et maintes fois ... Toute aide serait grandement appréciée
J'ai créé un répertoire /usr/chroot
que je veux utiliser comme prison et créé des sous-répertoires sous celui-ci et copié les dépendances de /bin/bash
celui-ci:
[root@WIG001-001 ~]# cd /usr/chroot/
[root@WIG001-001 chroot]# ls
[root@WIG001-001 chroot]# mkdir bin etc lib var home
[root@WIG001-001 chroot]# ldd /bin/bash
linux-vdso.so.1 => (0x00007fff99dba000)
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00000037a2000000)
libdl.so.2 => /lib64/libdl.so.2 (0x000000379fc00000)
libc.so.6 => /lib64/libc.so.6 (0x000000379f800000)
/lib64/ld-linux-x86-64.so.2 (0x000000379f400000)
[root@WIG001-001 chroot]# cp /lib64/libtinfo.so.5 /usr/chroot/lib/
[root@WIG001-001 chroot]# cp /lib64/libdl.so.2 /udr/csr/chroot/lib/
[root@WIG001-001 chroot]# cp /lib64/libc.so.6 /usr/chroot/lib/
[root@WIG001-001 chroot]# cp /lib64/ld-linux-x86-64.so.2 /usr/chroot/lib/
[root@WIG001-001 chroot]# cp /bin/bash bin
[root@WIG001-001 chroot]# pwd
/usr/chroot
[root@WIG001-001 chroot]# /usr/sbin/chroot .
/usr/sbin/chroot: cannot run command `/bin/bash': No such file or directory
it looks like the /bin/bash created under /usr/chroot is fine as the below works:
[root@WIG001-001 chroot]# su - nobody -s /usr/chroot/bin/bash
-bash-4.0$
Quelqu'un peut-il me donner une idée d'où aller d'ici?
cp /lib64/libdl.so.2 /udr/csr/chroot/lib/
(devrait être/usr
au lieu de/udr
)Réponses:
Le message d'erreur est trompeur :
/bin/bash: No such file or directory
peut signifier soit qu'il/bin/bash
n'existe pas, soit que le chargeur dynamique utilisé par/bin/bash
n'existe pas. (Vous obtiendrez également ce message pour un script si l'interpréteur sur la#!
ligne n'existe pas.)/bin/bash
cherche/lib64/ld-linux-x86-64.so.2
mais vous avez fourni/lib/ld-linux-x86-64.so.2
. Faites/usr/chroot/lib64
un symboliquelib
ou vice versa.la source
cp
commandes: vous avez copié des fichiers du/lib64
système de base/lib
dans le chroot. Mais le binaire bash cherche toujoursld-linux-x86-64.so.2
dans/lib64
(que vous n'avez pas créé), non/lib
. Vous vous épargnerez des maux de tête en créant/lib
et/lib64
équivalent dans le chroot, alors exécutezln -s lib /usr/chroot/lib64
. Quant à savoir pourquoi le message d'erreur est surbash
et non surld-linux-x86-64.so.2
, voir mon premier paragraphe./lib
est un lien symbolique vers/usr/lib
puis mettre un fichier dans le/usr/lib
met dedans/lib
, car ce sont le même répertoire! À un moment donné, cela n'a pas fonctionné au début parce que le chargeur conserve un cache du contenu de/lib
et/usr/lib
, et il a commencé à fonctionner lorsque le cache a été reconstruit. L'exécutionldconfig
reconstruit le cache, et cela peut avoir été fait par vous ou automatiquement par exemple par un gestionnaire de packages lorsque vous avez installé une mise à jour logicielle.Faites juste ceci:
mv /usr/chroot/lib /usr/chroot/lib64
la source
J'ai également fait face à la même erreur. Le meilleur moyen est de trouver la différence entre le contenu de l'image de secours (live CD) "/" et le contenu "/ mnt / sysimage".
Le problème a été résolu en copiant / bin et / sbin du répertoire "/" vers "/ mnt / sysimage" où il a été accidentellement supprimé.
la source
vous devez essayer de copier le fichier .bashrc dans le répertoire personnel. et cela vous aidera sûrement.
la source