3

我知道从技术上讲,您无法对线程进行 chroot,但我正在寻找功能性替代方案,以限制线程中现有任务集的权限数量。

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

4

2 回答 2

3

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

于 2019-03-31T16:59:02.497 回答
2

使用Win32 API 中的模拟函数为 Windows 中的线程设置权限是微不足道的。

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

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

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

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

于 2012-12-12T23:47:40.717 回答