在Windows下删除进程权限

时间:2010-10-19 08:32:43

标签: security winapi setuid

我正在寻找一种方法来出于安全原因而放弃进程权限。我希望以具有权限的用户身份开始,并以有限的用户身份结束。

例如,我希望我的Web服务器在受限制的用户下运行,我仍然想在端口80上监听。

如何在Windows下执行此类操作。类似于Unix的东西:

bind_to_80();
chroot("/some/limited/dir");
setuid(limited_user_id);
setgid(limited_group_id);
chroot("/some/limited/dir");
// drop some more rights
fork(); // now I can't come back

如何在Windows下执行类似操作?

编辑:我当然明白Windows没有fork或chroot,但我正在寻求删除各种权限,尤其是用户最佳实践。

1 个答案:

答案 0 :(得分:3)

使用Mark Russinovich's descriptionCreateRestrictedToken查看Windows下的CreateProcessAsUser剥离权限。正如他解释的那样,这不是防弹的,因为进程运行的帐户仍然保留其权限。

当然,他的PsExec sysinternals实用程序可帮助您删除至少Administrator个权限,而无需编码。

对于现有流程,似乎AdjustTokenAdjustTokenGroup允许操作(前者显然需要XPSP2或更高版本),但需要权限本身......可能以这种方式提交权限seppuku ,但我没有尝试过:他们可能 barf操纵当前进程的权限。