我知道你不能在技术上chroot一个线程,但我正在寻找能够限制线程内现有任务集的权限数量的功能替代方案。
编辑:这适用于Linux环境,但Windows相关技术也很有用(即使它们没有* NIX等效。
使用Win32 API中的impersonation functions在Windows中设置线程的权限是微不足道的。
我不是GNU / Linux系统编程方面的专家,所以可能有扩展允许修改每个线程的UID,但据我所知,Unix系统每个进程的安全性不像Windows中的每个线程。
这是因为历史上Unix使用进程进行并行处理(fork),而Windows使用线程(CreateThread),并且(历史上?)在Unix中创建新进程的速度与在Windows中创建新线程的速度相当。
我给你的问题+1,因为粗略的谷歌搜索似乎表明限制权限的首选方法是通过安全性将不同的任务分配给进程,并使用setuid设置权限,然后选择性地chroot它们。
我想知道是否还有其他选项,因为如上所述,这个用例在windows中实现起来相当简单。
Linux上的线程和进程之间几乎没有差异。使用带有标志clone
且没有标志CLONE_THREAD
的CLONE_FS
系统调用,以便新线程不与调用线程共享其根目录/当前目录/ umask。或者,您可以在事后使用unshare
系统调用CLONE_FS
。现在你可以正常使用chroot
,它不会影响进程中的其他线程。