chroot:無法執行指令「/bin/bash」:沒有這樣的檔案或目錄

chroot:無法執行指令「/bin/bash」:沒有這樣的檔案或目錄

當我運行chroot命令時出現錯誤:

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

答案1

這個錯誤的意思是沒有/bin/bash目錄內部chroot。確保將其指向bash可執行檔(或其他 shell 的)所在chroot目錄。

如果有/mnt/somedir/usr/bin/bash則執行chroot /mnt/somedir /usr/bin/bash.

除了上述之外,您還需要新增libc目錄依賴項,如答案所述這裡

答案2

我有內部 chrooted 目錄,但裡面/bin/bash沒有/liband 。/lib64來自的訊息chroot可能更具描述性。 「沒有這樣的檔案或目錄」實際上意味著「我無法運行這個...」。

/bin/bash當然取決於libcld-linuxlibdl,您可以使用它ldd /bin/bash來查看它需要哪些庫。

  1. 您可以mount -o bind在這些目錄下chroot
  2. chroot或者,如果您不信任 chrooted env 不會損壞它們, 則可以將這些庫複製到,如下所示:
    cp -a /usr rootfs/
    cp -a /lib rootfs/
    cp -a /lib64 rootfs/
    

答案3

chroot嘗試啟動預設情況下在環境變數中設定的 shell $SHELL,但它會在新的根目錄中尋找它,該目錄似乎不包含/bin/bash,因此無法啟動。

您可以透過簡單地將 chroot 新增為參數來告訴 chroot 在新根目錄中啟動另一個程式:

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

請注意,命令的路徑被解釋為裡面你的新根,所以在這個例子中被呼叫的程式實際上是在/your/new/root/bin/foo

答案4

當嘗試 ssh 到遠端伺服器上的 chroot 帳戶時,我遇到了同樣的錯誤。就我而言,我在遠端 lib64 目錄中缺少以下檔案。伺服器是Centos6.9

ld-linux-x86-64.so.2

透過執行以下命令修復了該問題:

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

相關內容