chroot falla: no se puede ejecutar el comando `/ bin / bash ': no ​​existe tal archivo o directorio


16

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/chrootque 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í?


¿Es esto un error tipográfico en la pregunta o un error en los pasos que realizó? cp /lib64/libdl.so.2 /udr/csr/chroot/lib/(debe ser en /usrlugar de /udr)
pausa hasta nuevo aviso.

Eso es un artefacto de usar Putty para registrar la sesión de telnet, lo siento. Como sugiere, el comando real ingresado fue cp /lib64/libdl.so.2 / usr / chroot / lib /
Mike Atkinson el

Respuestas:


30

El mensaje de error es engañoso : /bin/bash: No such file or directorypuede significar que /bin/bashno existe o que el cargador dinámico utilizado por /bin/bashno existe. (También recibirá este mensaje para un script si el intérprete en la #!línea no existe).

/bin/bashestá buscando /lib64/ld-linux-x86-64.so.2pero usted proporcionó /lib/ld-linux-x86-64.so.2. Hacer /usr/chroot/lib64un simbólico libo viceversa.


Lo siento, realmente aprecio la ayuda y estoy seguro de que tienes razón, ¡pero todavía estoy confundido! No estoy seguro de dónde ves que / bin / bash se proporciona con /lib/ld-linux-x86-64.so.2 y estoy aún más confundido ya que / usr / chroot / lib64 no existe. ¿Sería demasiado descarado pedir una lista de comandos? Entiendo los enlaces de Sym y cómo crearlos, pero estoy realmente confundido por lo que está sucediendo aquí y lo que está sugiriendo para corregirlo. ¡Muchas gracias por su ayuda!
Mike Atkinson

1
@ Mike: Mira tus cpcomandos: copiaste archivos del /lib64sistema base /liben el chroot. Pero el binario bash todavía está buscando ld-linux-x86-64.so.2en /lib64(que no ha creado), no /lib. Se ahorrará dolores de cabeza al hacer /liby /lib64equivalentes dentro del chroot, por lo ejecute ln -s lib /usr/chroot/lib64. En cuanto a por qué el mensaje de error se trata bashy no se trata ld-linux-x86-64.so.2, consulte mi primer párrafo.
Gilles 'SO- deja de ser malvado'

Eso funciona perfectamente, muchas gracias por tomarse el tiempo, ¡es enormemente apreciado!
Mike Atkinson

Gran respuesta. En mi caso, el problema fue causado por rsync sin la bandera de preservar enlaces
gtsouk

1
@miyalys If /libes un enlace simbólico para /usr/libluego 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 /liby /usr/lib, y comenzó a funcionar cuando se reconstruyó el caché. La ejecución ldconfigreconstruye el caché, y puede haberlo hecho usted o automáticamente, por ejemplo, un administrador de paquetes cuando instaló una actualización de software.
Gilles 'SO- deja de ser malvado'


-1

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.

#cp -r /bin /sbin /mnt/sysimage
#reboot

-4

debe intentar copiar el archivo .bashrc en el directorio de inicio. Y seguramente ayudará.


3
Esto no tiene sentido.
Sven
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.