Soy un novato chroot tratando de hacer una simple cárcel chroot pero me golpeo la cabeza contra el mismo problema una y otra vez ... Cualquier ayuda sería enormemente apreciada
Creé un directorio /usr/chroot
que quiero usar como cárcel y creé subdirectorios debajo de él y copié las dependencias de /bin/bash
él:
[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$
¿Alguien puede darme alguna idea de a dónde ir desde aquí?
cp /lib64/libdl.so.2 /udr/csr/chroot/lib/
(debe ser en/usr
lugar de/udr
)Respuestas:
El mensaje de error es engañoso :
/bin/bash: No such file or directory
puede significar que/bin/bash
no existe o que el cargador dinámico utilizado por/bin/bash
no existe. (También recibirá este mensaje para un script si el intérprete en la#!
línea no existe)./bin/bash
está buscando/lib64/ld-linux-x86-64.so.2
pero usted proporcionó/lib/ld-linux-x86-64.so.2
. Hacer/usr/chroot/lib64
un simbólicolib
o viceversa.fuente
cp
comandos: copiaste archivos del/lib64
sistema base/lib
en el chroot. Pero el binario bash todavía está buscandold-linux-x86-64.so.2
en/lib64
(que no ha creado), no/lib
. Se ahorrará dolores de cabeza al hacer/lib
y/lib64
equivalentes dentro del chroot, por lo ejecuteln -s lib /usr/chroot/lib64
. En cuanto a por qué el mensaje de error se tratabash
y no se tratald-linux-x86-64.so.2
, consulte mi primer párrafo./lib
es un enlace simbólico para/usr/lib
luego poner un archivo en/usr/lib
él/lib
, ¡ya que esos son el mismo directorio! Al principio, no funcionó al principio porque el cargador mantiene un caché del contenido de/lib
y/usr/lib
, y comenzó a funcionar cuando se reconstruyó el caché. La ejecuciónldconfig
reconstruye el caché, y puede haberlo hecho usted o automáticamente, por ejemplo, un administrador de paquetes cuando instaló una actualización de software.Solo haz esto:
mv /usr/chroot/lib /usr/chroot/lib64
fuente
También me enfrenté al mismo error. La mejor manera es encontrar la diferencia entre el contenido "/" de imagen de rescate (CD en vivo) y el contenido "/ mnt / sysimage".
El problema se resolvió copiando / bin y / sbin del directorio "/" a "/ mnt / sysimage", donde se eliminó accidentalmente.
fuente
debe intentar copiar el archivo .bashrc en el directorio de inicio. Y seguramente ayudará.
fuente