3

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

例如,我希望我的 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,但我正在寻找放弃各种权利,尤其是用户 - 最佳实践。

4

1 回答 1

3

看看Mark Russinovich 对在 Windows 下使用CreateRestrictedToken和剥离权限的描述CreateProcessAsUser。正如他解释的那样,这并不是万无一失的,因为运行该进程的帐户仍然保留其特权。

当然,他的PsExec sysinternals 实用程序可以帮助您至少剥离Administrator特权,而无需编码。

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

于 2010-10-19T09:19:30.443 回答