记录进程如何访问其库依赖项


  1. 当我把一个进程放入chroot监狱后,它就可以访问监狱外的libc.so库。为什么或如何?

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

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

  4. 我读到chroot功能不能提供真正的安全环境,在Linux上有其他解决方案吗?

  1. 只要它在调用chroot之前打开了它,它仍然打开它,就像它自己的二进制文件一样。但是,chroot是特权操作,因此调用它的进程可能会更改标识并执行实际进程,并且除非它在chroot中可用,否则它将无法访问libc.so
  2. 软链接是在进程的命名空间中解析的,因此它不会解析为chroot之外的文件
  3. 我不确定(也怀疑不会(。通常情况下,这并不重要,因为作为特权操作,它是在一个简单的包装器中完成的,该包装器不是多线程的,而是仅在chrooting、关闭所有文件句柄、将当前目录更改为chroot并放弃特权后才启动多线程应用程序
  4. Chroot不安全。根部很容易脱落(例如,通过再次安装设备(。有提供安全进程隔离的Linux Vserver、lxc和OpenVZ。LXC使用cgroupsLinux功能(从2.6.29内核开始(,另外两个似乎需要修补内核。如果你只需要监禁一个应用程序,你也可以自己设置cgroup

最新更新