Quando executo o chroot
comando, é apresentado um erro:
failed to run command ‘/bin/bash’: No such file or directory
executable
chroot
USER3254789
fonte
fonte
Respostas:
Este erro significa que não há
/bin/bash
diretório dentro do chroot . Certifique-se de apontá-lo para ondebash
(ou outro shell) executável está nochroot
diretórioSe você tiver
/mnt/somedir/usr/bin/bash
executadochroot /mnt/somedir /usr/bin/bash
fonte
/root/.bashrc
ou/root/.bash_profile
no seuchroot
. Você pode renomear temporariamente esses arquivos? Além disso, você pode ter certeza de quebash
é executável (chmod +x /chroot/bin/bash
)?Eu tinha
/bin/bash
dentro do diretório chroot, mas não tinha / lib e / lib64 dentro dele. A mensagem do chroot pode ser mais descritiva. "nenhum arquivo ou diretório" realmente significa "Não consigo executar isso ..."./bin/bash
Dependendo, é claro, da libc, ld-linux, libdl etc., você pode usarldd /bin/bash
para ver quais bibliotecas são necessárias.1) Você pode
mount -o bind
esses diretórios no chroot 2) Ou pode copiar essas bibliotecas para o chroot, se você não confiar no env chrootado para não corrompê-los, assim:fonte
chroot
tenta iniciar o shell que está definido na sua$SHELL
variável de ambiente por padrão, mas procura no 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:
Observe que o caminho do comando é interpretado dentro de sua nova raiz; portanto, neste exemplo, o programa chamado está de fato em
/your/new/root/bin/foo
fonte
Eu estava recebendo o mesmo erro ao tentar ssh para uma conta chroot em um servidor remoto. No meu caso, estava faltando o seguinte arquivo no diretório lib64 remoto. O servidor é Centos6.9
Foi corrigido executando o seguinte:
fonte
cp -r /lib /lib64 /secure/jail
lo, eu precisava de algo da lib e da lib64 e não me incomodei em descobrir exatamente o que. (provavelmente porque eu tinha multiarch ativado)você precisa executar o ldd no bash
ldd $(which bash)
, então você pode encontrar uma dependência ausente, por exemplo, se você não montou / copiou a lib64, para 64 sistemas, isso ocorrerá através deste erro.fonte
Caso esteja fazendo uma compilação cruzada, você precisará usar o simulador qemu, que pode executar / mnt / somedir / bin / bash depois de copiar o qemu-arm-static (estou fazendo isso para armhf) no / mnt / somedir / usr / bin você poderá fazer chroot.
Verifique isso para obter mais detalhes: https://blog.lazy-evaluation.net/posts/linux/debian-armhf-bootstrap.html
fonte