2011-05-03 68 views
0
  1. 当我在chroot监狱中放置了一个进程后,它可以访问libc.so位于jail之外的库。为什么或者如何?chroot进程如何访问其库依赖关系?

  2. 如果我们有一个指向jail外的文件的软链接,我们可以访问主文件吗?

  3. 我们可以在多线程应用程序中使用chroot吗?或者如果我们从一个线程改变根目录,整个过程的根目录会改变?

  4. 我读过chroot函数没有提供真正的安全环境,在Linux上有没有其他解决方案?

回答

1
  1. 只要它有它打开调用chroot之前,它仍然有它打开,就像它自己的二进制文件。但是,chroot是特权操作,所以调用它的进程可能会改变标识并执行实际进程,除非它在chroot中可用,否则将无法访问libc.so
  2. 软链接在进程的名称空间中解析,因此它不会解析为在chroot之外的文件。
  3. 我不确定(并且会怀疑它没有)。通常它并不重要,因为被特权操作是在一个不是多线程的简单包装器中完成的,而是仅在chrooting之后启动多线程应用程序,关闭所有文件句柄,将当前目录切换到chroot并删除特权。
  4. Chroot不安全。 Root可以很容易地逃脱(例如再次安装设备)。有Linux-Vserver,lxcOpenVZ,提供安全的进程隔离。 LXC使用cgroups Linux特性(自内核2.6.29开始),另外两个似乎需要补丁内核。如果你只是需要监禁一个应用程序,你也可以自己设置cgroup。
+1

我不确定lxc是否更安全,root仍然可以在/上挂载任何设备。 – 2011-08-24 18:26:23