当我运行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
没有/lib
and 。/lib64
来自的消息chroot
可能更具描述性。 “没有这样的文件或目录”实际上意味着“我无法运行这个......”。
/bin/bash
当然取决于libc
、ld-linux
等libdl
,您可以使用它ldd /bin/bash
来查看它需要哪些库。
- 您可以
mount -o bind
在这些目录下chroot
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/