无法创建根监狱

无法创建根监狱

我只是尝试使用 chroot 命令仅用于测试目的,以便创建临时根监狱,但我没有成功。平台是CentOS 6.4。到目前为止,除了这次之外,我已经做过很多次了。我按照该顺序执行了程序:

  1. 创建binetchomelibvar目录。
  2. ldd /bin/bash
  3. 复制上述lib目录中的所有库以及./bin/bashbin
  4. 然后运行chroot /path/to/the/jail出现如下:

    chroot: failed to run command `/bin/bash': No such file or directory
    

我无法确定这个错误来自哪里,而且我从来没有遇到过这样的问题。相同的过程在 Ubuntu 服务器上运行得很好。该问题仅发生在该特定服务器上。

根据下面的评论,这是调试命令的一些输出:

[root@localhost chroot]# find -printf '%M %p\n'
 drwxr-xr-x 。
 drwxr-xr-x ./bin
 -rwxr-xr-x ./bin/bash
 drwxr-xr-x ./var
 drwxr-xr-x ./var/var
 drwxr-xr-x ./home
 drwxr-xr-x ./lib
 -rwxr-xr-x ./lib/libdl.so.2
 -rwxr-xr-x ./lib/libc.so.6
 -rwxr-xr-x ./lib/libtinfo.so.5
 -rwxr-xr-x ./lib/ld-linux-x86-64.so.2
 drwxr-xr-x ./等
[root@localhost bin]# ldd /mnt/proba1/chroot/bin/bash
 linux-vdso.so.1 => (0x00007fff6fe00000)
 libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007f12cdd40000)
 libdl.so.2 => /lib64/libdl.so.2 (0x00007f12cdb38000)
 libc.so.6 => /lib64/libc.so.6 (0x00007f12cd7a0000)
 /lib64/ld-linux-x86-64.so.2 (0x00007f12cdf70000)

答案1

输出ldd显示bash期望在 中找到其库/lib64,而不是/lib.另外,这意味着您必须复制它们 /lib64进入监狱内的相应目录。中找到的相同文件/lib将不起作用。

答案2

我所做的是为此使用“mount --bind”。您还可以将其设置为只读。例如:

mkdir test
cd test
mkdir bin sbin usr etc
mount --bind -o ro /bin bin
mount --bind -o ro /sbin sbin
mount --bind -o ro /usr usr
mount --bind -o ro /etc etc
chroot .

这并不完全,但你明白了。如果你也使用“aufs”,这会变得非常酷。它允许您在可读层之上放置一个可写层。这样,您最终就不必复制、将其绑定挂载为只读,但仍然使其可写,而所有写入都保存在某个占位符中。另一件可以尝试的事情是使用“cp -l”链接复制。然后是“cow”,意思是写时复制。它的作用是首先制作一个副本,但所有目录条目都指向磁盘上的相同节点。它看起来像一个副本,但它们都是链接的。不是符号链接,而是硬链接。 Cow 使得当您尝试写入文件时,该文件的实际内容首先被复制,然后被修改。

相关内容