Windows

如何將服務的啟動/停止/重新啟動權限授予非域成員伺服器上的任意使用者或組?

  • January 28, 2020

我們的伺服器上執行著一套 Windows 服務,它們彼此獨立地執行一堆自動化任務,除了一個服務負責其他服務。

如果其中一項服務無法響應或掛起,該服務會嘗試重新啟動服務,如果在嘗試期間引發異常,則會向支持團隊發送電子郵件,以便他們可以自行重新啟動服務。

做了一些研究後,我遇到了一些“解決方案”,從KB907460中提到的解決方法到提供服務執行管理員權限的帳戶。

我對這兩種方法都不滿意 - 我不理解 Microsoft 知識庫文章中概述的第一種方法的後果,但我絕對不想讓管理員訪問執行服務的帳戶.

我快速瀏覽了本地安全策略,除了定義帳戶是否可以作為服務登錄的策略之外,我看不到任何其他看起來像是指服務的東西。

我們在 Server 2003 和 Server 2008 上執行它,所以任何想法或指針都會被親切地接受!


**澄清:**我不想將啟動/停止/重新啟動所有服務的能力授予給定使用者或組 - 我希望能夠僅授予給定使用者或組對特定服務執行此操作的權限。


**進一步澄清:**我需要授予這些權限的伺服器不屬於域 - 它們是兩個面向網際網路的伺服器,它們接收文件、處理它們並將它們發送給第三方,以及為幾個網站提供服務,所以Active Directory 組策略是不可能的。抱歉,我沒有說得更清楚。

除非您加入了域,否則似乎沒有基於 GUI 的方式來執行此操作——至少我在任何地方都找不到——所以我做了更多的探勘,我找到了一個適用於的答案我們的情況。

我不明白知識庫文章中的字元串表示是什麼意思,但是做了一些探勘讓我發現它是 SDDL 語法。進一步探勘讓我看到了Alun Jones 的這篇文章,它解釋瞭如何獲取服務的安全描述符以及每個位的含義。MS KB914392有更多詳細資訊。

要附加到服務的現有安全描述符,請使用sc sdshow "Service Name"獲取現有描述符。如果這是一個普通的舊 .NET Windows 服務 - 就像我們的情況一樣 - 安全描述符應該如下所示:

D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOC
RRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CR;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)S:(AU;FA
;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

我們需要授予權限RP(啟動服務)、WP(停止服務)、DT(暫停/繼續服務)和LO(查詢服務的目前狀態)。這可以通過將我們的服務帳戶添加到 Power Users 組來完成,但我只想授予對執行維護服務的帳戶的個人訪問權限。

使用runas在服務帳戶下打開命令提示符,我執行whoami /all它給了我服務帳戶的 SID,然後在下面構造了額外的 SDDL:

(A;;RPWPDTLO;;;S-x-x-xx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxx-xxxx)

然後將其添加到上面 SDDL 字元串的**D:**部分:

D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOC
RRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CR;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)(A;;RPWP
DTLO;;;S-x-x-xx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxx-xxxx)S:(AU;FA;CCDCLCSWRPWPDTLOC
RSDRCWDWO;;;WD)

sc sdset然後使用以下命令(在S:文本之前)將其應用於服務:

sc sdset "Service Name" D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;
CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CR;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU
)(A;;RPWPDTLO;;;S-x-x-xx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxx-xxxx)S:(AU;FA;CCDCLCSW
RPWPDTLOCRSDRCWDWO;;;WD)

如果一切按計劃進行,則服務可以啟動、停止、暫停,並由上述 SID 定義的使用者查詢其狀態。

引用自:https://serverfault.com/questions/187302