方法一:使用组策略
1、管理工具-Active Directory用户和计算机
2、右键点击域-创建新的组织单位
3、右键点击新建的组织单位选择属性
4、选择组策略
5、创建新的组策略,进行编辑
6、计算机配置-Windows设置-安全设置-系统服务
7、双击你需要设置权限的服务
8、定义这个策略是个设置-编辑安全设置(默认是Everyone完全控制)
9、删除Everyone组,添加System组和其他有访问权限的用户。
10、分配给用户和组读取、启动、停止和暂停的权限。
11、把服务的启动模式改为自动。
12、把你所需要限制服务的计算机添加到你所创建的组织单位里面,完成!
注:如果发现设置错误的话,可以通过Regedt32编辑
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\\Security,删除Security键,重新启动。
方法二:使用Subinacl
Subinacl为2000ResourceKit里面提供的工具,具体语法如下。
SUBINACL /SERVICE \\ComputerName\ServiceName /GRANT=[DomainName\]UserName[=Access]
这其中:
ComputerName - 机器的NetBIOS名,省略的话代表本地
ServiceName - 服务的名称
DomainName - 域名,省略的话搜索本地的用户
UserName - 要被赋予权限的用户名称
Access - F : 完全控制 (缺省)
R : 读
W : 写
X : 执行
L : 读取控制
Q : 查询服务的设置
S : 查询服务的状态
E : 列出所依赖的服务
C : 改变服务的设置
T : 启动服务
O : 停止服务
P : 暂停/开始 服务
I : 询问服务
U : 用户用命令行方式定义服务控制
如果本机的话就容易多了,比如想限定本机的DNS服务的权限是Administrator完全控制的话执行
subinacl /service \dns /grant=administrator=f就OK了。
方法三:使用脚本
提供了一个例子,根据自己的实际情况可以对下面的脚本进行修改。
jsiDomain= Wscript.Arguments.Item(0)'domain of computer account
jsiComputer = Wscript.Arguments.Item(1)'netbios ComputerName
jsiUserName = Wscript.Arguments.Item(2)'UserName (in the domain)
jsiPerm= Wscript.Arguments.Item(3)'access code
'bind to ComputerName
set objTarget = GetObject("WinNT://" & jsiDomain & "/" & jsiComputer & ",computer")
'create a shell object for call to subinacl
set objCMD = CreateObject("Wscript.Shell")
'get list of services
objTarget.filter = Array("Service")
For each Service in objTarget
command = "subinacl /service " & Service.name & " /grant=" & jsiUserName & "=" & jsiPerm
objCMD.Run command, 0
'report the services
Wscript.Echo "User granted access to " & Service.name & " "
next
NOTE: This script does NOT perform any error checking.