﻿# Windows 如何設定「特定服務」由「特定使用者」進行管理

我們有個客戶的生產環境的資安要求極其嚴格，我們廠商進去維護都必須申請才能提高權限，否則就要委由系統維護人員進行操作，所以非常不方便。然而他們向我提出了個例外條件，就是他們可以接受特定服務可以由廠商的特定帳號來管理，不過好像 Windows 沒有這種授權方式，請我找看看有沒有這種方法。最後我也研究出設定的方法，還真的 100% 符合客戶的要求，今後我們維護作業就更輕鬆了，以下是設定的方法筆記。

要搜尋這種需問題，最重要的就是下對關鍵字，我也忘了我當時搜尋哪些關鍵字，但有點是肯定的：輸入中文來搜尋肯定找不到。 XD

最後我找到 [KB 325349](http://support.microsoft.com/kb/325349/en-us) - How to grant users rights to manage services in Windows Server 2003，這一篇就是專講如何授予特定使用者權限來管理 Windows 服務，裡面提到了三個方法，不過由於我們的環境是 Windows Server 2008，所以並不是所有方法都適用，我一一將實驗與研究的心得說明如下：

**方法一：使用群組原則 ( Use Group Policy )**

這方法請參考另一篇 [KB 324802 - HOW TO: Configure Group Policies to Set Security for System Services in Windows Server 2003](http://support.microsoft.com/kb/324802/EN-US/)

若要找適用於 Windows Server 2008 的群組原則設定，請參考以下這篇文章的說明進行操作：[Controlling Service Security Using Windows Server 2008](https://web.archive.org/web/20130117015224/http://windowsecurity.com/articles/Controlling-Service-Security-Windows-Server-2008.html)

**方法二：使用安全性範本 ( Use Security Templates )**

在 [KB 325349](http://support.microsoft.com/kb/325349/en-us) 裡僅適用於 Windows Server 2003，設定時的畫面如下：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/8a497c592cfdcee6d3f4-image_1118.png)

我試了幾次似乎無法透過這種方式在 Windows Server 2008 設定，主要是找不到 Security Template 的設定檔，但實在是不甘心，後來又多花了些時間研究 Security Template，直到看完了 [Default Security Templates in Windows 2008](http://blogs.technet.com/b/askds/archive/2008/05/28/default-security-templates-in-windows-2008.aspx) 這篇文章才確認原來是 Windows Server 2008 的 Security Template 檔案已經移動位置了，新的路徑在 C:\\Windows\\inf 目錄下 。

所以如果要在 Windows Server 2008 使用安全性範本設定，做到 [KB 325349](http://support.microsoft.com/kb/325349/en-us) Method 2 的第 6 步時，要記得選取 C:\\Windows\\inf\\Defltsv.inf 設定檔才可以，以下是設定成功時的畫面：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/ba58a60c0b15e76a00f2-image_1119.png)

**方法三：使用 Subinacl.exe 工具程式**

這個方法最容易請人代為操作，只要一行指令就能設定完成，以下是設定步驟：

1\. 下載並安裝 [SubInACL](https://web.archive.org/web/20120405025636/http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=23510) 工具程式

下載完 subinacl.msi 安裝檔並執行安裝程序後，程式會被安裝在以下目錄：

```
C:\Program Files\Windows Resource Kits\Tools
```

此目錄下會有個 subinacl.exe 執行檔與 subinacl.htm 說明文件：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/812951750ca2a19d1966-image_1120.png)

此工具的用法說明如下：（ 其中 \[DomainName\\\] 與 \[=Access\] 參數是可以被忽略的 ）

```
SUBINACL /SERVICE \\MachineName\ServiceName /GRANT=[DomainName\]UserName[=Access]
```

在執行之前，你必須要知道 Windows 服務的名稱為何，所以請注意不要輸入「顯示名稱」喔！

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/a1d148a6b1c6719e4ea3-image_1121.png)

以下是指令執行的範例：

1\. 設定本機的 ASP.NET 狀態服務，授予 test01 使用者擁有完整控制權限

```
subinacl.exe /SERVICE \\.\aspnet_state /GRANT=test01
```

2\. 設定本機的 ASP.NET 狀態服務，撤銷 test01 使用者的所有控制權限

```
subinacl.exe /SERVICE \\.\aspnet_state /REVOKE=test01
```

3\. 如果你只要授予該使用者「啟動」與「停止」的權限，可以使用以下指令：

```
subinacl.exe /SERVICE \\.\aspnet_state /GRANT=test01=TO
```

   上述的 T 代表的是「啟動服務」的權限，O 代表的是「停用服務」的權限，完整存取權限的定義如下：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/cde50c646b0f1c5a30ab-image_1122.png)

由於一次意外的經驗讓我學會了 Security Templates 的設定，這才發現原來 Windows 可以設定如此仔細的安全性設定，不過話說回來，又有幾個單位會這樣仔細的設定服務權限控管呢？ ^\_^

**相關連結**

-   [How to grant users rights to manage services in Windows Server 2003](http://support.microsoft.com/kb/325349/en-us)
-   [How To Configure Group Policies to Set Security for System Services in Windows Server 2003](http://support.microsoft.com/kb/324802/EN-US)
-   [Download Details - Microsoft Download Center - SubInACL (SubInACL.exe)](https://web.archive.org/web/20120405025636/http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=23510)
-   [Controlling Service Security Using Windows Server 2008](https://web.archive.org/web/20130117015224/http://windowsecurity.com/articles/Controlling-Service-Security-Windows-Server-2008.html)
-   [Default Security Templates in Windows 2008](http://blogs.technet.com/b/askds/archive/2008/05/28/default-security-templates-in-windows-2008.aspx)
-   [Understanding Windows Security Templates](https://learn.microsoft.com/en-us/windows/win32/secmgmt/security-templates)
