你目前正处于脱机状态,正在等待 Internet 重新连接

如何授予用户管理 Windows 2000 中的服务的权限

概要
本文介绍几种授权用户管理 Windows 2000 中的服务的方法。在 Windows 2000 中,默认情况下只有管理员和超级用户才能启动、停止或暂停服务。本文介绍向其他用户和组授予这些权限的方法。

返回页首

方法 1:授予使用组策略的权限

可以通过应用组策略向用户授予这些权限。有关如何完成此操作的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
256345 如何配置组策略以设置系统服务安全
本文包含详细的分步说明。不过,本文没有明确说明本地组策略中没有相应的设置。

返回页首

方法 2:授予使用安全模板的权限

该方法与方法 1 非常类似,但是它使用安全模板来更改系统服务的权限。为此,请按照下列步骤操作:
  1. 单击开始,单击运行,然后键入 MMC
  2. 控制台菜单上,单击添加/删除管理单元
  3. 单击添加
  4. 选择“安全配置和分析”管理单元,然后单击添加
  5. 单击关闭,然后单击确定
  6. 在 MMC 中,右键单击“安全配置和分析”项,然后单击打开数据库
  7. 为数据库指定名称,然后浏览至要存储该数据库的位置。
  8. 在出现提示时,选择要导入的安全模板。例如,“basicwk.inf”包含 Windows 2000 Professional 计算机上的标准设置的值。
  9. 在 MMC 中,右键单击“安全配置和分析”项,然后单击“立即分析计算机”选项。在出现提示时,选择日志文件的存放位置。
  10. 分析完成后,按如下方式配置服务权限:
    1. 在 MMC 中,双击系统服务分支。
    2. 右键单击要更改的服务,然后单击安全设置
    3. 单击编辑安全设置
    4. 根据需要添加用户帐户,并为每个帐户配置权限。默认情况下,用户会被授予“启动、停止和暂停”权限。
  11. 要将这些新设置应用到本地计算机,只须右键单击“安全配置和分析”项,然后单击立即配置计算机选项即可。

也可以将修改后的设置从 MMC 中导出并应用到使用Windows 2000 附带的 SECEDIT 命令行工具的多台计算机。有关使用 SECEDIT 的更多信息,请在命令提示符处键入以下命令:
secedit /?
注意:用这种方法应用这些设置将会重新应用模板中的所有设置,因此可能会覆盖由其他方法设置的其他文件、注册表或服务权限。

返回页首

方法 3:授予使用 Subinacl.exe 的权限

分配用来管理服务的权限的最后一种方法是使用 Windows 2000 Resource Kit 中提供的 Subinacl.exe 实用工具。此实用工具的语法如下所示:
SUBINACL /SERVICE \\计算机名\服务名/GRANT=[域名\]用户名[=访问权限]

注意

  • 执行此命令的用户必须有管理员权限,才能成功完成此命令。
  • 如果省略“计算机名”,则采用本地计算机。
  • 如果省略“域名”,则在本地计算机上搜索帐户。
  • 尽管该语法示例列出了用户名,但它同样适用于用户组。
  • “访问权限”可以使用以下值:
    F:完全控制R:一般性读W:一般性写X:一般性执行L:读取控制Q:查询服务配置S:查询服务状态E:枚举从属服务C:提供配置更改T:启动服务O:停止服务P:暂停/继续服务I:询问服务U:提供用户定义的控制命令					
  • 如果省略“访问权限”,则采用“F(完全控制)”。
  • Subinacl 支持与文件、文件夹和注册表项有关的类似功能。有关更多信息,请参阅 Windows 2000 Resource Kit
  • 由于注册表中特定于服务的项中会使用服务名称,因此该名称应为“短名称”:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<ServiceName>
    如果服务名称包含空格,则应将整个参数用引号引起来。例如:
    "\\计算机名\包含空格的服务名称"

自动执行多项更改

在 Subinacl 没有可指定的选项时,您可以指定为给定计算机上的所有服务设置必需的访问权限。不过,以下示例脚本演示了一种方法,可对上述方法进行扩展以自动执行该任务:
strDomain   = Wscript.Arguments.Item(0)'domain where computer account is heldstrComputer = Wscript.Arguments.Item(1)'computer netbios namestrSecPrinc = Wscript.Arguments.Item(2)'user's login name as in:DomainName\UserNamestrAccess   = Wscript.Arguments.Item(3)'access granted, as per the list in the KB 'bind to the specified computerset objTarget = GetObject("WinNT://" & strDomain & "/" & strComputer & ",computer")'create a shell object.Needed to call subinacl laterset objCMD = CreateObject("Wscript.Shell")'retrieve a list of servicesobjTarget.filter = Array("Service")For each Service in objTarget 'call subinacl to se the permissionscommand = "subinacl /service " & Service.name & " /grant=" & strSecPrinc & "=" & strAccessobjCMD.Run command, 0'report the services that have been changedWscript.Echo "User rights changed for " & Service.name & " service"next				

注意

  • 应将该脚本另存为 .vbs 文件(如“Services.vbs”),并通过以下方法进行调用:
    CSRIPT Services.vbs 域名 计算机名 用户名 访问权限					
  • 如果不需要反馈信息,可注释掉或删除“Wscript.Echo ...”一行。
  • 此示例不执行错误检查,因此使用时要小心。
  • Windows 2000 Resource Kit 文档提到了另一种实用工具 (svcacls.exe),该工具执行与 Subinacl 一样的服务管理权限操作。这是一个文档编写错误。
返回页首
参考
有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
269875 Windows 2000 Resource Kits 中不包含 SVCACLS.EXE
返回页首
属性

文章 ID:288129 - 上次审阅时间:06/17/2004 02:31:00 - 修订版本: 4.0

  • Microsoft Windows 2000 Service Pack 1
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Service Pack 1
  • kbhowtomaster kbenv KB288129
反馈