我正在寻找一种方法来出于安全原因而放弃进程权限。我希望以具有权限的用户身份开始,并以有限的用户身份结束。
例如,我希望我的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,但我正在寻求删除各种权限,尤其是用户最佳实践。
答案 0 :(得分:3)
使用Mark Russinovich's description和CreateRestrictedToken
查看Windows下的CreateProcessAsUser
剥离权限。正如他解释的那样,这不是防弹的,因为进程运行的帐户仍然保留其权限。
当然,他的PsExec sysinternals实用程序可帮助您删除至少Administrator
个权限,而无需编码。
对于现有流程,似乎AdjustToken
和AdjustTokenGroup
允许操作(前者显然需要XPSP2或更高版本),但需要权限本身......可能以这种方式提交权限seppuku ,但我没有尝试过:他们可能 barf操纵当前进程的权限。