コマンドを実行するとchroot
エラーが発生します:
failed to run command ‘/bin/bash’: No such file or directory
答え1
/bin/bash
このエラーはディレクトリが存在しないことを意味しますchroot 内実行可能ファイルがディレクトリbash
内にある場所 (または他のシェルの実行可能ファイルがある場所)を指定していることを確認してください。chroot
ある場合は/mnt/somedir/usr/bin/bash
、 を実行しますchroot /mnt/somedir /usr/bin/bash
。
上記以外にも、libc
回答に記載されているように、ディレクトリ依存関係も追加する必要があります。ここ。
答え2
chroot されたディレクトリ内にはありましたが、その中には/bin/bash
ありませんでした。 からのメッセージは、より説明的である可能性があります。「そのようなファイルまたはディレクトリはありません」は、実際には「これを実行できません...」という意味です。/lib
/lib64
chroot
/bin/bash
もちろんlibc
、、ld-linux
などによって異なりますがlibdl
、 を使用ldd /bin/bash
して必要なライブラリを確認できます。
mount -o bind
これらのディレクトリはchroot
chroot
または、chroot された環境でライブラリが破損しないことを信頼できない場合は、次のようにして これらのライブラリを にコピーすることもできます。cp -a /usr rootfs/ cp -a /lib rootfs/ cp -a /lib64 rootfs/
答え3
chroot
デフォルトで環境変数に設定されているシェルを起動しようとします$SHELL
が、新しいルート ディレクトリで検索しますが、そこには が含まれていないように見えるため/bin/bash
、起動できません。
パラメータとして追加するだけで、chroot に新しいルート内で別のプログラムを起動するように指示できます。
chroot /your/new/root /bin/foo --options...
コマンドのパスは解釈されることに注意してください内部新しいルートなので、この例では呼び出されるプログラムは実際には/your/new/root/bin/foo
答え4
リモート サーバー上の chroot されたアカウントに ssh しようとしたときに、同じエラーが発生しました。私の場合、リモート lib64 ディレクトリに次のファイルがありませんでした。サーバーはCentos6.9です
ld-linux-x86-64.so.2
以下を実行することで修正されました:
cp /lib64/ld-linux-x86-64.so.2 /secure/jail/lib64/