chrooted进程如何访问其库依赖项?

时间:2011-05-03 08:56:12

标签: chroot

  1. 将进程放入chroot jail后,它可以访问jail之外的libc.so库。为什么或可能如何?

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

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

  4. 我已经读过chroot函数没有提供真正的安全环境,Linux上有替代解决方案吗?

1 个答案:

答案 0 :(得分:1)

  1. 只要它在调用chroot之前打开它,它仍然打开它,就像它自己的二进制文件一样。但是,chroot是特权操作,因此调用它的过程可能会改变身份并执行真实过程,除非在chroot中可用,否则将无法访问libc.so
  2. 在流程的命名空间中解析了软链接,因此它不会解析为chroot之外的文件。
  3. 我不确定(并且怀疑它没有)。通常没关系,因为特权操作是在一个非多线程的简单包装器中完成的,但只是在chroot之后启动多线程应用程序,关闭所有文件句柄,将当前目录更改为chroot并删除权限
  4. Chroot不安全。 Root可以轻松逃脱(例如,再次安装设备)。有Linux-VserverlxcOpenVZ可提供安全的进程隔离。 LXC使用cgroups Linux功能(自内核2.6.29),其他两个似乎需要修补内核。如果您只需要监禁一个应用程序,您也可以自己设置cgroup。