[玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
作者:精品下载站 日期:2024-12-15 00:51:26 浏览:18 分类:玩电脑
如何允许非管理员用户在 Windows 中启动/停止服务
默认情况下,普通(非管理员)用户无法管理 Windows 服务。这意味着用户无法停止、启动、重新启动或更改 Windows 服务的设置和权限。在某些情况下,用户需要具有重新启动或管理某些服务的权限。在本文中,我们将介绍管理 Windows 服务权限的几种方法。作为示例,我们将展示如何允许非管理员用户重新启动特定的 Windows 服务。
假设您需要授予域帐户contoso 用户重新启动Print Spooler 服务的权限。如果非管理员用户尝试重新启动服务,则会显示错误:
net stop spooler
System error 5 has occurred. Access is denied.
在Windows中,有几种授予服务权限的方法:
使用 Windows CMD 管理服务权限
您可以使用内置的 sc.exe(服务控制器)控制台命令来管理 Windows 服务的权限。
sc show
— 列出当前服务权限
sc sdset
- 更改服务权限
该方法的主要缺点是向服务授予权限的格式非常复杂。使用安全描述定义语言(SDDL)格式。
您可以获取 SDDL 字符串形式的当前服务权限:
sc.exe sdshow Spooler
D:(A;;CCLCSWLOCRRC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)
(A;;CCLCSWRPWPDTLOCRRC;;;SY)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)
这些符号是什么?
S: — System Access Control List (SACL)
D: — Discretionary ACL (DACL)
括号后的第一个字母表示:允许 (A) 或拒绝 (D)。
可分配的权限是下一组字符。
CC — SERVICE_QUERY_CONFIG (query service settings)
LC — SERVICE_QUERY_STATUS (get service status)
SW — SERVICE_ENUMERATE_DEPENDENTS
LO — SERVICE_INTERROGATE
CR — SERVICE_USER_DEFINED_CONTROL
RC — READ_CONTROL
RP — SERVICE_START
WP — SERVICE_STOP
DT — SERVICE_PAUSE_CONTINUE
最后 2 个字符是授予权限的对象(用户、组或 SID)。以下是预定义组的列表。
AU经过身份验证的用户
AO账户运营商
RU允许使用以前的 Windows 2000 的别名
AN匿名登录
AU经过身份验证的用户
BA内置管理员
BG内置客人
BO备份操作员
BU内置用户
CA证书服务器管理员
CG创作者组
CO创作者所有者
DA域管理员
DC域计算机
DD域控制器
DG域来宾
DU域用户
EA企业管理员
ED企业域控制器
WD每个人
PA组策略管理员
IU交互式登录用户
LA本地管理员
LG当地客人
LS本地服务帐户
SY本地系统
NU网络登录用户
NO网络配置运算符
NS网络服务帐号
PO打印机操作员
PS个人自我
PU高级用户
RSRAS 服务器组
RD终端服务器用户
RE复制器
RC受限代码
SA架构管理员
SO服务器运营商
SU服务登录用户
您可以使用 DACL 中预定义的组,也可以通过 SID 指定任何用户或组。使用以下命令获取当前用户的SID:
whoami /user
或者,您可以使用 Get-ADUser cmdlet 查找任何域用户的 SID:
Get-ADUser -Identity 'sadams' | select SID
使用 Get-ADGroup cmdlet 获取域组 SID:
Get-ADGroup -Filter {Name -eq "ny-ithelpdesk"} | Select SID
要为特定服务分配具有权限的 SDDL 字符串,请使用 sc sdset 命令。在此示例中,将以下行添加到服务 ACL。
(A;;RPWPCR;;;S-1-5-21-2133228432-2794320136-1823075350-1000)
A - 允许
RPWPCR -RP (SERVICE_START) + WP (SERVICE_STOP) + CR (SERVICE_USER_DEFINED_CONTROL)
SID - 用户或组 SID
将您的 ACL 添加到 sdshow 返回的字符串末尾。使用 sc sdset 命令将新权限应用于服务:
sc sdset Spooler "D:(A;;CCLCSWLOCRRC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;RPWPCR;;;S-1-5-21-2133228432-2794320136-1823075350-1000)"
如果您有有效的 DACL,该命令将返回:
[SC] SetServiceObjectSecurity SUCCESS
如果指定了不存在的 SID 或 SDDL 语法错误,则会出现错误:
未完成帐户名称和安全 ID 之间的映射。
检查非管理员用户现在是否可以停止和启动服务:
net stop spooler && net start spooler
SERVICE_NAME: Spooler
DISPLAY_NAME: Print Spooler
ACCOUNT: LocalSystem
SECURITY:
[ALLOW] NT AUTHORITY\Authenticated Users
Query status
Query Config
Interrogate
Enumerate Dependents
User-Defined Control
Read Permissions
[ALLOW] NT AUTHORITY\SYSTEM
Query status
Query Config
Interrogate
Enumerate Dependents
Pause/Resume
Start
Stop
User-Defined Control
Read Permissions
[ALLOW] WOSHUB\max_adm
Change Config
Start
Stop
User-Defined Control
Read Permissions
[ALLOW] BUILTIN\Administrators
All
在以前版本的 Windows 中,您可以使用 SubInACL 控制台工具(Windows 资源工具包的一部分)来管理服务权限。
要允许 contoso 用户用户帐户重新启动服务:
subinacl.exe /service Spooler /grant=contoso\tuser=PTO
在这种情况下,用户已被授予暂停/继续、启动和停止服务的权限。可用权限的完整列表:
F完全控制
R通用读
W通用写入
X通用执行
L读控制
Q查询服务配置
S查询服务状态
E枚举依赖服务
C服务变更配置
T启动服务
O停止服务
P暂停/继续服务
I询问服务
U业务自定义控制命令
要撤销用户分配的服务权限,请使用 /revoke 选项:
subinacl.exe /service Spooler /revoke=contoso\tuser
不过,SubInACL 目前无法从 Microsoft 网站下载,因此不建议使用。
如何使用 Process Explorer 更改服务权限
您可以使用 Process Explorer 工具 (https://learn.microsoft.com/en-us/sysinternals/downloads/process-explorer) 从 GUI 管理服务权限。
以管理员身份运行 Process Explorer,并在进程列表中查找您需要的服务进程。在这个例子中是
spoolsv.exe
(后台打印程序可执行文件 C:\Windows\System32\spoolsv.exe)。打开流程属性并转到服务选项卡;
单击权限按钮。服务的当前 ACL 将显示在窗口中。默认情况下,本地用户只能查看(读取)服务状态;
添加您要授予服务权限的用户或组。默认情况下只有以下服务权限可用:完全控制、写入和读取;
您可以为服务分配写入权限,以便用户可以启动和停止它。然而,这也允许用户更改甚至删除该服务;
要仅允许启动/停止服务,请单击高级按钮 -> 选择您的用户,单击编辑 -> 单击显示高级权限。权限列表中仅保留启动、停止、读取、查询状态和自定义控制选项;
保存更改;
分配的用户现在可以重新启动服务。
使用 PowerShell 设置服务权限
内置的 Set-Service 服务管理 cmdlet 允许您使用 SDDL 格式设置服务的权限,类似于 sc sdset:
$SDDL = "D:(A;;CCLCSWLOCRRC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;RPWPCR;;;S-1-5-21-2133228432-2794320136-1823075350-1000)"
Set-Service -Name Spooler -SecurityDescriptorSddl $SDDL
仅在安装/升级 PowerShell Core 后,此版本的 cmdlet 才可用。
在 Windows PowerShell 5.1 中,此命令失败:
Set-Service : A parameter cannot be found that matches parameter name 'SecurityDescriptorSddl'.
您还可以使用 PowerShell 库中的 Carbon 模块管理各种 Windows 对象的权限。安装模块:
Install-Module -Name 'Carbon'
Import-Module 'Carbon'
为了向服务授予权限,请使用以下命令:
Grant-CServicePermission -Identity a-d\maxadm -Name spooler -QueryStatus -EnumerateDependents -Start -Stop
列出服务的当前 ACL:
Get-ServicePermission -Name spooler|fl
如何使用组策略授予服务权限
如果您需要授予 用户有权启动和停止所有域服务器或计算机上的服务,最简单的方法是使用组策略 (GPO) 功能。
创建一个新的 GPO 或编辑现有的 GPO,并将其链接到具有计算机对象的必要 Active Directory 容器 (OU)。进入计算机配置->Windows设置->安全设置->系统服务;
找到Print Spooler服务并打开其属性;
启用定义此策略设置选项,启用服务自动启动,然后单击编辑安全性;
在服务安全设置中,添加要为其分配服务权限的用户或域组。授予启动、停止、暂停和读取权限;
您所需要做的就是等待客户端计算机上的组策略设置更新,并检查您的用户现在是否可以重新启动服务。
Windows 服务安全权限存储在哪里?
您更改了默认权限的所有服务的安全设置都存储在它们自己的注册表项中
HKLM\System\CurrentControlSet\Services\<servicename>\Security
在 Security 参数(REG_BINARY 类型)中。
这意味着在其他计算机上设置相同权限的方法之一是导出/导入此注册表参数。您可以使用 GPO 将更改部署到域计算机上的注册表。
如果您希望用户能够远程停止/启动/重新启动服务(无需授予他们本地登录权限或 RDP 访问权限),您需要允许他们远程枚举服务控制管理器服务(
scmanager
)。
以下命令允许具有指定 SID 的远程组(用户)枚举远程计算机上的服务列表:
sc sdset scmanager "D:(A;;CC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)(A;;CC;;;AC)(A;;CCLCRPRC;;;{PASTE_YOUR_SID_HERE})S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)"
否则,当您尝试查询远程 Windows 主机上的服务时,您将收到错误消息:
sc \lonts-01 query
[SC] OpenSCManager FAILED 5:
Access is denied.
因此,我们研究了多种管理 Windows 服务权限的不同方法,这些方法允许向非管理员用户授予系统服务的任何权限。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[软件合集] 25年5月31日 精选软件66个
[电影] 黄沙漫天(2025) 4K.EDRMAX.杜比全景声 / 4K杜比视界/杜比全景声
[风口福利] 短视频红利新风口!炬焰创作者平台重磅激励来袭
[韩剧] 宝物岛/宝藏岛/金银岛(2025)【全16集】【朴炯植/悬疑】
[电影] 愤怒的牦牛 (2025) 国语中字 4k
[短剧合集] 2025年05月30日 精选+付费短剧推荐56部
[软件合集] 25年5月30日 精选软件26个
[软件合集] 25年5月29日 精选软件18个
[短剧合集] 2025年05月28日 精选+付费短剧推荐38部
[软件合集] 25年5月28日 精选软件37个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[美图] 2W美女个美女小姐姐,饱眼福
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag