如何授予用户管理服务的权限
09/27/2020
本文内容
本文介绍如何向用户授予管理服务的权限。
适用于: WindowsServer 2003
原始 KB 编号: 325349
摘要
本文介绍如何授予用户管理 Windows Server 2003 中的系统服务的权限。
默认情况下,只有 管理员组成员才能启动、停止、暂停、恢复或重新启动服务。 本文介绍可用于向用户授予适当权限以管理服务的方法。
方法 1:使用组策略
可以使用组策略更改对系统服务的权限。 有关其他信息,请单击以下文章编号以查看 Microsoft 知识库中的文章:
324802 HOW TO: Configure Group Policies to Set Security for System Services in Windows Server 2003
方法 2:使用安全模板
若要使用安全模板更改系统服务的权限,请执行以下步骤创建安全模板:
单击 "开始",单击"运行",在"打开"框中键入 mmc, 然后单击"确定 "。
在 “文件” 菜单上,单击 “添加/删除管理单元”。
单击 "添加", 单击"安全配置和分析", 单击 "添加",单击 "关闭**",** 然后单击"确定"。
在控制台树中,右键单击"安全配置和分析", 然后单击"打开数据库"。
指定数据库的名称和位置,然后单击"打开 "。
在出现的 "导入 模板"对话框中,单击要导入的安全模板,然后单击"打开 "。
在控制台树中,右键单击"安全配置和分析",然后单击"立即 分析计算机"。
在出现的 "执行分析"对话框中,接受"错误 日志文件 路径"框中显示的 日志文件 的默认 路径或指定所需的位置,然后单击"确定 "。
分析完成后,按如下方式配置服务权限:
在控制台树中,单击"系统服务"。
在右窗格中,双击要更改其权限的服务。
单击以选中"在数据库中定义此策略"复选框,然后单击"编辑 安全性"。
若要配置新用户或组的权限,请单击"添加 "。 在 "选择用户、 计算机或组"对话框中,键入要设置其权限的用户或组的名称,然后单击"确定 "。
在 "用户或 组的权限"列表中,配置用户或组所需的权限。 添加新用户或组时,默认情况下会选中"开始、停止和 暂停"权限旁边的"允许"复选框。 此设置允许用户或组启动、停止和暂停服务。
单击 “确定” 两次。
若要将新的安全设置应用于本地计算机,请右键单击"安全配置和分析",然后单击"立即 配置计算机"。
备注
您还可以使用 Secedit 命令行工具来配置和分析系统安全性。 有关 Secedit 的信息,请单击"开始",然后单击"运行"。 在"打开"框中键入 cmd,然后单击"确定"。 在命令提示符下,键入 secedit /? ,然后按 Enter。 请注意,使用此方法应用设置时,将重新应用模板中所有的设置,这可能会覆盖以前配置的其他文件、注册表或服务权限。
方法 3:使用Subinacl.exe
分配管理服务权限的最终方法涉及使用 Subinacl.exe 2000 资源工具包Windows实用程序。 语法如下所示:
SUBINACL /SERVICE \ \MachineName\ServiceName /GRANT=[DomainName ] UserName[=Access]
备注
运行此命令的用户必须具有管理员权限才能成功完成此命令。
如果 省略 MachineName, 则假定本地计算机。
如果 省略 DomainName, 则本地计算机将搜索该帐户。
尽管语法示例指示用户名,这也将适用于用户组。
Access 可以使用的值如下所示:
F :完全控制
R :通用读取
W:通用写入
X:泛型 eXecute
L:读取 controL
问:查询服务配置
S:查询服务状态
E:枚举依赖服务
C:服务更改配置
T:启动服务
O :停止服务
P :暂停/继续服务
I :查询服务
U:服务User-Defined控制命令
如果 省略 Access, 则F#"完全控制) "。
Subinacl 支持与文件、文件夹和注册表项相关的类似功能。 有关详细信息,请参阅 Windows 2000 资源工具包。
自动执行多个更改
使用 Subinacl 时,没有可以指定的选项将设置特定计算机上所有服务所需的访问权限。 但是,以下示例脚本演示了扩展方法 3 以自动执行任务的一种方法:
strDomain = Wscript.Arguments.Item(0)'domain where computer account is held
strComputer = Wscript.Arguments.Item(1)'computer netbios name
strSecPrinc = Wscript.Arguments.Item(2)'user's login name as in: DomainName\UserName
strAccess = Wscript.Arguments.Item(3)'access granted, as per the list in the KB
'bind to the specified computer
set objTarget = GetObject("WinNT://" & strDomain & "/" & strComputer & ",computer")
'create a shell object. Needed to call subinacl later
set objCMD = CreateObject("Wscript.Shell")
'retrieve a list of services
objTarget.filter = Array("Service")
For each Service in objTarget
'call subinacl to se the permissions
command = "subinacl /service " & Service.name & " /grant=" & strSecPrinc & "=" & strAccess
objCMD.Run command, 0
'report the services that have been changed
Wscript.Echo "User rights changed for " & Service.name & " service"
next
备注
将脚本另存为 .vbs 文件(如"Services.vbs",并按如下方式调用它:
CSRIPT Services.vbs DomainName ComputerName UserName 访问
注释掉或删除行"Wscript.Echo..."如果不需要反馈。
此示例不进行错误检查;因此,请谨慎使用。
2000 Windows 2000 资源工具包文档提到另一 (svcacls.exe) 一个实用程序,它执行与 Subinacl 相同的服务管理权限操作。 这是文档错误。