sudo chroot ./rootfs
,因为 chroot
将尝试从./rootfsbin/bash
加载 bash。这个文件不存在,这是 chroot
的第一个问题。对于某些事情,使用 cp
复制它们就足够了:
cp -a /bin/bash ./rootfs/bin/bash
但这只会复制 bash 可执行文件,而不是它的所有依赖项,这些依赖项还不存在于我们的rootfs中。您可以使用 ldd
命令列出 bash 的依赖项:
ldd /bin/bash linux-vdso.so.1 (0x00007fff29d4a000) libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f9adfe88000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9adfc84000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9adf893000) /lib64/ld-linux-x86-64.so.2 (0x00007f9ae03cc000)
您可以手动复制它们:
cp /lib/x86_64-linux-gnu/libtinfo.so.5 .rootfs/lib/x86_64-linux-gnu/ cp /lib/x86_64-linux-gnu/libdl.so.2 .rootfs/lib/x86_64-linux-gnu/ cp /lib/x86_64-linux-gnu/libc.so.6 .rootfs/lib/x86_64-linux-gnu/ cp /lib64/ld-linux-x86-64.so.2 rootfs/lib64/
如果介意chroot
是否访问实际 lib
和 bin
目录(无法访问系统的其余部分),那么还可以使用 mount --bind
在你的 jail 中提供一个链接:
mount --bind /bin ./rootfs/bin mount --bind /lib ./rootfs/lib mount --bind /lib64 ./rootfs/lib64
您也可以只复制整个 /bin
和 /lib
目录,这会占用更多空间,但对于安全性来说可能更好一些,尤其是当您使用 chroot
以运行您不希望弄乱系统文件夹的不安全进程。
现在一切就绪,应该能够运行 sudo chroot .rootfs
打开 bash,也可以通过运行以下命令来运行任何其他命令:
sudo chroot ./rootfs command
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » chroot: failed to run command ‘/bin/bash’: No such file or directory
发表评论 取消回复