2016-12-09 62 views
1

我正在嘗試創建一個有權創建其他服務的Windows服務。但我不希望使用管理登錄來運行此服務。服務創建服務 - 爲用戶分配SC_MANAGER_CREATE_SERVICE

用戶權限是非常有限的 - 我只是需要它能夠應要求提供服務。

我已經在網上看到SC_MANAGER_CREATE_SERVICE是一個現在可以分配和/或更改的權限,但我沒有在上看到太多如何完成。有人提及可以通過OpenCache和sc命令通過subinacl更改單個服務的權限。但是這些示例顯示瞭如何更改單個服務的權限,而不是如何授予用戶SC_MANAGER_CREATE_SERVICE權限。

但是,我注意到CreateService的文檔特別說明它需要管理員privilages - 所以也許根本不可能。

我將不得不使用管理員帳戶啓動該服務嗎?還是有人知道另一個詭計?

+0

是否有某些原因導致您無法使用LocalService帳戶? –

+1

'CreateService()'文檔中沒有任何內容明確指出需要管理員權限(儘管這樣做是有道理的,因爲它寫入註冊表中的HKEY_LOCAL_MACHINE),只有'OpenSCManager()'必須用'SC_MANAGER_CREATE_SERVICE'調用在'dwDesiredAccess'參數中指定。 –

回答

2

Service Security and Access Rights:

獲取或設置安全描述符SCM,帶手柄的SCMANAGER對象使用QueryServiceObjectSecurity和SetServiceObjectSecurity功能。

請注意,擁有創建服務的權限可爲您提供有效的管理員訪問權限,因爲您可以創建服務以作爲本地系統運行。因此,您必須小心,不要將該權限授予不受信任的用戶有權訪問的帳戶,以確保擁有該權限的所有帳戶都具有強密碼,等等。

這也意味着如果您的系統服務受到遠程代碼執行漏洞的威脅,您沒有獲得任何東西,攻擊者仍然能夠控制您的系統。如果該服務具有直接攻擊的高風險,則可能有明智的做法,即讓第二個服務僅負責需要特殊權限的任務。但是,對於不太可能受到直接攻擊或被認爲是合理安全的服務,在沒有管理員權限(除創建服務的能力之外)的情況下運行可能會阻止不太可能被利用的漏洞,或者限制非 - 與安全有關的錯誤。

另請參閱服務器故障上的Granting service control manager access permission to user outside of administrator group,答案顯示如何從命令行更改SCM權限。