chroot: コマンド '/bin/bash' の実行に失敗しました: そのようなファイルまたはディレクトリはありません

chroot: コマンド '/bin/bash' の実行に失敗しました: そのようなファイルまたはディレクトリはありません

コマンドを実行すると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/lib64chroot

/bin/bashもちろんlibc、、ld-linuxなどによって異なりますがlibdl、 を使用ldd /bin/bashして必要なライブラリを確認できます。

  1. mount -o bindこれらのディレクトリはchroot
  2. 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/

関連情報