出于安全原因,我正在寻找一种删除进程权限的方法。我想以具有特权的用户身份开始,以有限用户身份结束。
例如,我希望我的 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,但我正在寻找放弃各种权限,尤其是用户 - 最佳实践。
最佳答案
看看Mark Russinovich's description使用 CreateRestrictedToken
在 Windows 下剥离特权和 CreateProcessAsUser
.正如他解释的那样,这不是万无一失的,因为运行进程的帐户仍然保留其特权。
当然,还有他的 PsExec sysinternals 实用程序可帮助您至少删除 Administrator
特权,无需编码。
对于现有的进程,似乎 AdjustToken
和 AdjustTokenGroup
允许操作(前者显然需要 XPSP2 或更高版本),但本身需要特权……可能可以通过这种方式提交特权 seppuku,但我还没有尝试过:他们 可能对操作当前进程的特权的barf。
关于security - 删除windows下的进程权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3966536/