chroot: Befehl „/bin/bash“ konnte nicht ausgeführt werden: Keine solche Datei oder kein solches Verzeichnis

chroot: Befehl „/bin/bash“ konnte nicht ausgeführt werden: Keine solche Datei oder kein solches Verzeichnis

Wenn ich den chrootBefehl ausführe, wird ein Fehler angezeigt:

failed to run command ‘/bin/bash’: No such file or directory 

Antwort1

/bin/bashDieser Fehler bedeutet, dass kein Verzeichnis vorhanden istinnerhalb von Chroot. Stellen Sie sicher, dass Sie es auf die Stelle bashim Verzeichnis verweisen, an der sich die ausführbare Datei (oder eine andere Shell) befindet chroot.

Wenn ja, /mnt/somedir/usr/bin/bashführen Sie es aus chroot /mnt/somedir /usr/bin/bash.

Abgesehen von den oben genannten müssen Sie auch libcVerzeichnisabhängigkeiten hinzufügen, wie in der Antwort erwähntHier.

Antwort2

Ich hatte /bin/bashein chroot-Verzeichnis drin, aber kein /libund /lib64drin. Die Nachricht von chrootkönnte aussagekräftiger sein. „Keine solche Datei oder kein solches Verzeichnis“ bedeutet eigentlich „Ich kann das nicht ausführen …“.

/bin/bashhängt natürlich von libc, ld-linux, libdlusw. ab. Sie können verwenden ldd /bin/bash, um zu sehen, welche Bibliotheken erforderlich sind.

  1. Sie finden mount -o binddiese Verzeichnisse unterchroot
  2. chrootWenn Sie nicht darauf vertrauen, dass die chroot-Umgebung sie nicht beschädigt, können Sie diese Bibliotheken auch nach kopieren. Gehen Sie dazu folgendermaßen vor:
    cp -a /usr rootfs/
    cp -a /lib rootfs/
    cp -a /lib64 rootfs/
    

Antwort3

chrootversucht, die Shell zu starten, die $SHELLstandardmäßig in Ihrer Umgebungsvariable festgelegt ist, sucht jedoch in Ihrem neuen Stammverzeichnis danach, das anscheinend nichts enthält /bin/bash, sodass es nicht gestartet werden kann.

Sie können chroot anweisen, ein anderes Programm innerhalb des neuen Stammverzeichnisses zu starten, indem Sie es einfach als Parameter hinzufügen:

chroot /your/new/root /bin/foo --options...

Beachten Sie, dass der Pfad des Befehls interpretiert wirdinnenIhr neues Stammverzeichnis, so dass in diesem Beispiel das aufgerufene Programm tatsächlich in/your/new/root/bin/foo

Antwort4

Ich habe denselben Fehler erhalten, als ich versucht habe, per SSH auf ein Chroot-Konto auf einem Remote-Server zuzugreifen. In meinem Fall fehlte die folgende Datei im Remote-Verzeichnis lib64.Server ist Centos6.9

ld-linux-x86-64.so.2

Das Problem wurde durch die Ausführung des Folgenden behoben:

cp /lib64/ld-linux-x86-64.so.2 /secure/jail/lib64/

verwandte Informationen