线程的chroot替代品

时间:2012-12-12 22:42:49

标签: c++ permissions pthreads boost-thread chroot

我知道你不能在技术上chroot一个线程,但我正在寻找能够限制线程中现有任务集的权限数量的功能替代方案。

编辑:这适用于Linux环境,但Windows相关技术也很有用(即使它们没有* NIX等效。

2 个答案:

答案 0 :(得分:2)

使用Win32 API中的impersonation functions设置Windows中线程的权限是微不足道的。

我不是GNU / Linux系统编程方面的专家,所以可能有扩展允许修改每个线程的UID,但据我所知,Unix系统每个进程的安全性不像Windows中的每个线程。

这是因为历史上Unix使用进程进行并行处理(fork),而Windows使用线程(CreateThread),并且(历史上?)在Unix中创建新进程的速度与在Windows中创建新线程的速度相当。

我提出的问题是+1,因为粗略的Google搜索似乎表明限制权限的首选方法是通过安全性将不同的任务分配给进程,并使用setuid来设置权限,然后选择chroot它们。

我想知道是否还有其他选项,因为如上所述,这个用例在Windows中实现起来相当简单。

答案 1 :(得分:1)

Linux上的线程和进程之间几乎没有区别。使用带有标志clone且不带标志CLONE_THREAD的{​​{1}}系统调用,以便新线程不与调用线程共享其根目录/当前目录/ umask。或者,您可以在事后将CLONE_FSunshare一起使用。现在您可以正常使用CLONE_FS了,它将不会影响进程中的其他线程。