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/

相关内容