将进程放入
chroot
监狱后,它可以访问libc.so
监狱外的库。为什么或如何?如果我们有一个指向监狱外文件的软链接,我们可以访问主文件吗?
我们可以
chroot
在多线程应用程序中使用吗?或者如果我们从一个线程改变根目录,整个进程的根目录会改变?我已阅读该
chroot
功能不提供真正的安全环境,Linux 上是否有任何替代解决方案?
问问题
1439 次
1 回答
1
- 只要它在调用之前打开它
chroot
,它仍然是打开的,就像它自己的二进制文件一样。但是,chroot
这是特权操作,因此调用它的进程可能会更改身份并执行真正的进程,libc.so
除非它在 chroot 中可用,否则将无法访问。 - 软链接在进程的命名空间中解析,因此它不会解析到
chroot
. - 我不确定(并且会怀疑它没有)。通常没关系,因为作为特权操作,它是在一个非多线程的简单包装器中完成的,但仅在 chroot 后启动多线程应用程序,关闭所有文件句柄,将当前目录更改为 chroot 并删除特权.
- Chroot 不安全。Root 可以轻松逃脱(例如,通过重新安装设备)。有提供安全进程隔离的Linux-Vserver、lxc和OpenVZ 。LXC 使用cgroups Linux 功能(从内核 2.6.29 开始),其他两个似乎需要修补内核。如果您只需要监禁一个应用程序,您也可以自己设置 cgroup。
于 2011-05-03T09:28:33.427 回答