部署或安裝系統服務時須要指定服務運行的帳戶。通常地,可選擇Local System、Local Service或Network Service帳戶。web
Local System/Local Service/Network Service帳戶的區別在於每一個帳戶的權限(Rights)不一樣。在Windows 2003和Windows XP以前,Service幾乎都是運行在Local System帳戶下;從Windows 2003和WindowsXP開始,系統增長了Local Service和 Network Service帳戶。爲何要增長這兩個新的內置帳戶?如何爲Service選擇帳戶?sql
在回答這兩個問題以前,先說明兩個基本概念:shell
1)一個服務(Service)所具備的權限取決於爲該服務制定帳戶的權限;windows
2)某些服務容許與客戶端(Client)進行交互。例如 SQL Server 服務可以接收並執行客戶端提供的命令,特別地,用戶可以利用SQL Server中存儲過程 xp_cmdshell 執行用戶命令。sqlserver
明白上面兩個基本概念後,若是將一個服務指定咋Local System帳戶下運行,你很容易推測出這作的後果!由於Local System內置帳戶(正式的帳戶名稱是NT AUTHORITY\SYSTEM )是一個具備很是高特權的帳戶。一旦惡意用戶利用運行在Local System下的可交換服務對計算機發動攻擊,那將是十分危險的。與Local System帳戶相比,Local Service/Network Service帳戶所具備的權限要少不少。在Windows 2003或XP設置這兩個帳戶主要的目的就是爲了規避在Local System下運行服務所帶來的風險。具體例子,請參考http://windowsitpro.com/systems-management/running-services-under-system-or-administrator給出的描述spa
微軟在Windows 2003或XP中增長的Local Service 和 Network Service 這兩個帳戶採用了最小權限(Minimal Authority)原則。至於Local Service和Network Service之間有差別,能夠參考 Difference between local service account and network service account in windows server with respect to SQL Server 2005orm