Quando executo o chroot
comando ocorre um erro:
failed to run command ‘/bin/bash’: No such file or directory
Responder1
Este erro significa que não há /bin/bash
diretóriodentro do chroot. Certifique-se de apontar para onde bash
o executável (ou outro shell) está no chroot
diretório.
Se você tiver /mnt/somedir/usr/bin/bash
, execute chroot /mnt/somedir /usr/bin/bash
.
Além do acima, você também precisa adicionar libc
dependências de diretório, conforme mencionado na respostaaqui.
Responder2
Eu tinha /bin/bash
dentro do diretório chroot, mas não tinha /lib
dentro /lib64
dele. A mensagem de chroot
poderia ser mais descritiva. "nenhum arquivo ou diretório" realmente significa "Não consigo executar isso...".
/bin/bash
depende, é claro libc
, de ld-linux
, libdl
etc., você pode usar ldd /bin/bash
para ver quais bibliotecas são necessárias.
- Você pode
mount -o bind
esses diretórios emchroot
- Ou você pode copiar essas bibliotecas para
chroot
, se não confiar no ambiente chroot para não corrompê-las, assim:cp -a /usr rootfs/ cp -a /lib rootfs/ cp -a /lib64 rootfs/
Responder3
chroot
tenta iniciar o shell que está definido em sua $SHELL
variável de ambiente por padrão, mas procura por ele em seu novo diretório raiz, que parece não conter /bin/bash
, portanto não pode ser iniciado.
Você pode dizer ao chroot para iniciar outro programa dentro da nova raiz simplesmente adicionando-o como parâmetro:
chroot /your/new/root /bin/foo --options...
Observe que o caminho do comando é interpretadodentrosua nova raiz, então neste exemplo o programa chamado está de fato em/your/new/root/bin/foo
Responder4
Eu estava recebendo o mesmo erro ao tentar fazer ssh para uma conta chroot em um servidor remoto. No meu caso, estava faltando o seguinte arquivo no diretório remoto lib64.O servidor é Centos6.9
ld-linux-x86-64.so.2
Foi corrigido executando o seguinte:
cp /lib64/ld-linux-x86-64.so.2 /secure/jail/lib64/