自学内容网 自学内容网

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

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

原文地址:https://blog.csdn.net/boyemachao/article/details/142453151

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!