2010-10-19 107 views
2

我正在尋找一種方法來刪除進程權限,出於安全原因。我想以具有特權的用戶身份開始並以有限用戶結束。在windows下刪除進程權限

比如我想我的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

您是否嘗試以非特權用戶身份運行?我第一次在windows下設置了一個rest api服務器。我使用服務管理控制檯將服務配置爲以非管理員用戶身份運行。它仍然綁定並監聽端口80,沒有問題。 – 2016-03-03 19:05:14

回答

2

看看在Windows下使用CreateRestrictedTokenCreateProcessAsUser剝離特權Mark Russinovich's description。正如他解釋的那樣,這不是防彈的,因爲流程運行的賬戶仍然保留其特權。

,當然還有他的PsExec的Sysinternals工具可以幫助你奪走至少Administrator權限,無需編碼。

對於現有的過程中,似乎AdjustTokenAdjustTokenGroup許可證操作(前者顯然需要XPSP2或更高版本),但需要權限自己......有可能犯特權切腹自殺這種方式,但我沒有試過他們:他們可能 barf在操縱當前進程的權限。

+0

有沒有可能做到這一點,而無需啓動其他過程? – Artyom 2010-10-19 10:03:41

+0

我錯了:有些操作是可能的。編輯添加。不知道在運行過程中反射使用。嘗試無可替代! – 2010-10-19 10:24:10