Cuando ejecuto el chroot
comando me da un error:
failed to run command ‘/bin/bash’: No such file or directory
Respuesta1
Este error significa que no hay ningún /bin/bash
directorio.dentro de chroot. Asegúrese de señalar dónde bash
se encuentra el ejecutable (u otro shell) en chroot
el directorio.
Si es /mnt/somedir/usr/bin/bash
así, ejecute chroot /mnt/somedir /usr/bin/bash
.
Aparte de lo anterior, también necesita agregar libc
dependencias de directorio, como se menciona en la respuestaaquí.
Respuesta2
Tenía /bin/bash
dentro del directorio chroot, pero no tenía /lib
ni /lib64
dentro de él. 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 libc
, de ld-linux
, libdl
etc., puede usarlo ldd /bin/bash
para ver qué bibliotecas requiere.
- Puede acceder
mount -o bind
a estos directorios enchroot
- O puede copiar estas bibliotecas a
chroot
, si no confía en que el entorno chroot no las corrompa, así:cp -a /usr rootfs/ cp -a /lib rootfs/ cp -a /lib64 rootfs/
Respuesta3
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.
Puedes decirle a chroot que inicie otro programa dentro de la nueva raíz simplemente agregándolo como parámetro:
chroot /your/new/root /bin/foo --options...
Tenga en cuenta que la ruta del comando se interpretaadentrosu nueva raíz, por lo que en este ejemplo el programa llamado está de hecho en/your/new/root/bin/foo
Respuesta4
Recibí el mismo error al intentar realizar ssh a una cuenta chroot en un servidor remoto. En mi caso, me faltaba el siguiente archivo en el directorio lib64 remoto.El servidor es Centos6.9
ld-linux-x86-64.so.2
Se solucionó ejecutando lo siguiente:
cp /lib64/ld-linux-x86-64.so.2 /secure/jail/lib64/