Cuando ejecuto el chroot
comando aparece un error:
failed to run command ‘/bin/bash’: No such file or directory
executable
chroot
USUARIO3254789
fuente
fuente
Respuestas:
Este error significa que no hay
/bin/bash
directorio dentro de chroot . Asegúrate de señalar dóndebash
está el ejecutable (u otro shell) en elchroot
directorio.Si tienes
/mnt/somedir/usr/bin/bash
entonces ejecutarchroot /mnt/somedir /usr/bin/bash
fuente
/root/.bashrc
o/root/.bash_profile
en suchroot
. ¿Puedes cambiar temporalmente el nombre de estos archivos? ¿También puede asegurarse de quebash
es ejecutable (chmod +x /chroot/bin/bash
)?Tenía
/bin/bash
dentro del directorio chrooteado, pero no tenía / lib y / lib64 dentro. El mensaje de chroot podría ser más descriptivo. "no existe tal archivo o directorio" realmente significa "No puedo ejecutar esto ..."./bin/bash
depende, por supuesto, de libc, ld-linux, libdl, etc., puede usarldd /bin/bash
para ver qué bibliotecas necesita.1) Puede
mount -o bind
estos directorios en chroot 2) O puede copiar estas bibliotecas en chroot, si no confía en el entorno chroot para no corromperlos, así:fuente
chroot
intenta iniciar el shell que está configurado en su$SHELL
variable de entorno de forma predeterminada, pero lo busca en su nuevo directorio raíz, que parece no contener/bin/bash
, por lo que no puede iniciarse.Puede indicarle a chroot que inicie otro programa dentro de la nueva raíz simplemente agregándolo como parámetro:
Tenga en cuenta que la ruta del comando se interpreta dentro de su nueva raíz, por lo que, en este ejemplo, el programa llamado está de hecho en
/your/new/root/bin/foo
fuente
Recibía el mismo error al intentar ssh a una cuenta chrooteada en un servidor remoto. En mi caso, me faltaba el siguiente archivo en el directorio remoto lib64. El servidor es Centos6.9
Se solucionó ejecutando lo siguiente:
fuente
cp -r /lib /lib64 /secure/jail
solucionarlo, necesitaba algo de lib y lib64, y no me molesté en averiguar exactamente qué. (probablemente porque tenía habilitado multiarch)necesita ejecutar ldd contra bash
ldd $(which bash)
, entonces puede encontrar una dependencia que falta, por ejemplo, si no montó / copió lib64, para 64 sistemas, se solucionará este error.fuente
En caso de que esté haciendo una compilación cruzada, debe usar el simulador qemu que puede ejecutar / mnt / somedir / bin / bash una vez que copie qemu-arm-static (estoy haciendo esto para armhf) en / mnt / somedir / usr / bin podrás hacer chroot.
Mira esto para más detalles: https://blog.lazy-evaluation.net/posts/linux/debian-armhf-bootstrap.html
fuente