使用 PowerShell 設定使用者權限(User Right)
2 |
前篇文章提到手動賦與 Power Users 群組 Debug Program 使用者權限(User Right)以識別 IIS 程序 AppPool 的做法,但內行人都知道,得轉成批次作業才符合實務需求,否則若一次部署幾百台機器,豈不要設到眼花手軟。
要設計 Windows 管理批次作業,PowerShell 自然是首選。官方沒有現成工具,但 Technet 指令碼中心已有開發者寫好強大的使用者權限管理模組,用過的都說讚,我也真心推薦!
使用方法很簡單,下載 UserRights.psm1,在 Cmder 或 PowerShell 命令列視窗先 Import-Module .\UserRights.psm1,就有多出四個好用指令:
- Get-UserRightsGrantedToAccount 查詢特定帳號或群組被授與的使用者權限
- Get-AccountsWithUserRight 查詢具有特定使用者權限的帳號或群組
- Grant-UserRight 將指定使用者權限授與給特定帳號或群組
- Revoke-UserRight 將指定使用者權限從特定帳號或群組身上移除
以下是完整示範:
- Import-Module
- 查詢 Power Users 所具有的權限,順手查詢 Users 具有的權限對照
- 查詢具有 SeDebugProvilege 權限的帳號或群組,原本只有 Administrators
- 用 Grant-UserRight 加上 Power Users,再查詢證明 Administrators 跟 Power Users 都有 SeDebugProvilege
- 用 Revoke-UserRight 移除 Power Users 權限再查一次,SeDebugProvilege 權限又只剩下 Administrators 有
除了在本機執行,加上參數-Host 機器名稱或IP
; 可設定遠端機器,超級方便。
操作時需使用 SeDebugPrivilege 這種常數指定使用者權限,常數對照表可在 MS Doc 文件 找到,這裡一併附上方便參考:
Group Policy Setting | Constant Name |
---|---|
SeTrustedCredManAccessPrivilege | |
SeNetworkLogonRight | |
SeTcbPrivilege | |
SeMachineAccountPrivilege | |
SeIncreaseQuotaPrivilege | |
SeInteractiveLogonRight | |
SeRemoteInteractiveLogonRight | |
SeBackupPrivilege | |
SeChangeNotifyPrivilege | |
SeSystemtimePrivilege | |
SeTimeZonePrivilege | |
SeCreatePagefilePrivilege | |
SeCreateTokenPrivilege | |
SeCreateGlobalPrivilege | |
SeCreatePermanentPrivilege | |
SeCreateSymbolicLinkPrivilege | |
SeDebugPrivilege | |
SeDenyNetworkLogonRight | |
SeDenyBatchLogonRight | |
SeDenyServiceLogonRight | |
SeDenyInteractiveLogonRight | |
SeDenyRemoteInteractiveLogonRight | |
Enable computer and user accounts to be trusted for delegation | SeEnableDelegationPrivilege |
SeRemoteShutdownPrivilege | |
SeAuditPrivilege | |
SeImpersonatePrivilege | |
SeIncreaseWorkingSetPrivilege | |
SeIncreaseBasePriorityPrivilege | |
SeLoadDriverPrivilege | |
SeLockMemoryPrivilege | |
SeBatchLogonRight | |
SeServiceLogonRight | |
SeSecurityPrivilege | |
SeRelabelPrivilege | |
SeSystemEnvironmentPrivilege | |
SeManageVolumePrivilege | |
SeProfileSingleProcessPrivilege | |
SeSystemProfilePrivilege | |
SeUndockPrivilege | |
SeAssignPrimaryTokenPrivilege | |
SeRestorePrivilege | |
SeShutdownPrivilege | |
SeSyncAgentPrivilege | |
SeTakeOwnershipPrivilege |
有了這組好用 PowerShell 工具,配合-Host 主機名稱
參數跑迴圈能完成主機群組權限批次設定,還可查詢權限狀況並保留證據,權限部署作業將不再是問題。
Tips of how to use PowerShell to query, grant and revoke user rights.
Comments
# by Jun
請問哪邊可以下載得到UserRights.psm1 ? 謝謝。
# by Jeffrey
to Jun, Gallery 連結不知何故失效,我有在 Github 找到 https://github.com/MightyCrizo/cis-microsoft-windows-server-2016-benchmark-powershell/blob/master/UserRights.psm1