我意识到这与这个问题几乎完全相同,但是最大的区别在于MSKB文章中描述的方法对安装的Tomcat服务不起作用。 他们为简单的Windows服务工作,但不是我们需要控制的Tomcat服务。
还有什么想法?
编辑(详细信息):如果我有100个Tomcat容器服务,是否必须在每个服务的组上明确授予此权限? 有没有办法让一个DOMAIN组设置成拥有在15台机器上停止/启动100个不同的Tomcat服务的权限?
编辑(更多信息):我们正在使用Ant sshexec(jsch)并在调用net stop service_name时获取访问被拒绝的错误级别5。
我不确定你之前试过的是什么,但是这就是我刚刚做的并取得了成功:
1)下载Tomcat 5.5.27 Windows服务安装程序并安装它。
2)使用“sc sdshow tomcat5”转储TomCat5服务安全描述符,它向我显示:
D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)
这是一个相当普遍的服务安全描述符。 我已经在一些微软的服务上逐字的看过。 系统和内置的pipe理员有“完全控制”,“高级用户”可以停止,启动和暂停服务,“身份validation的用户”可以查询服务的属性(我在这里稍微涂一点)。
3)我创build了一个名为“bob”的受限用户,并打开了一个“RUNAS”命令提示符,并从“WHOAMI / ALL”(一个在Windows Server 2003上的命令,但不是在XP上)不知道关于Vista和Windows 7的情况)。 我validation了Bob无法停止/启动Tomcat服务(使用“NET STOP tomcat5”)。 我收到了您在post中报告的同一个错误。
4)从我的常规pipe理员命令提示符,运行以下:
sc sdset tomcat5 D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)(A;;RPWPDT;;;S-1-5-21-1409082233-484763869-854245398-1009)
此SDDLstring给Bob的SID(S-1-5-21-1409082233-484763869-854245398-1009)权限来停止,启动和暂停服务(分别为RP,WP和DT)。
5)我回到我的“鲍勃”命令提示符,并validation我现在可以停止并使用NET STOP和NET START启动服务。
我build议创build一个组来授予这个权利,把一个用户join到这个组中,获得组的SID(使用WHOAMI或者其他工具)并且以这种方式修改安全描述符。
我会认为使用组策略来修改安全描述符可以正常工作。 我已经看到了一些情况,一些服务不喜欢基于组策略的修改对服务的默认权限(如果你想看看我在说什么,请看这篇关于Windows Search服务的文章: http:/ /peeved.org/blog/2007/12/07 ),但这在我的经验中并不常见。
如果您需要安全描述符的更多背景服务,请查看http://msmvps.com/blogs/alunj/archive/2006/02/13/83472.aspx和http://support.microsoft.com/kb / 914392 。
您可以设置Windows调度程序作业来运行该命令。 调度程序作业可以设置为在其他用户的凭据下运行命令。 然后,您可以在工作上设置安全性,以便只有一定的用户可以运行它。
您需要pipe理员权限才能创build计划任务,但是您可以授予其他人权限来运行计划任务。 即使这是一个计划任务,您可以设置它,使其只能按需运行。
例如,假设您创build了一个作业(打开“控制面板”>“计划任务”,然后右键单击并select“新build”>“计划任务”):StartTomcat
转到“任务”选项卡。
将“运行”和“开始”值设置为启动Tomcat的命令行。 另外,将“Run As”行设置为允许启动和停止Tomcat的用户,然后单击“Set password …”button提供用户的密码。 最后,从“已启用”框中取消选中,因为您只需要按需运行作业。
然后转到“安全”选项卡。
添加要允许运行任务的人员,并授予他们只有 “读取和执行”权限的任务。
最后,创build一个batch file来执行任务。 batch file将包含以下行:
schtasks / run / tn StartTomcat
把batch file放在需要运行的用户可以访问的地方。 甚至有可能把batch file放在一个单独的机器上,但是你需要一些额外的参数给schtasks行。 您可以在Windows帮助中查找这些参数。
你需要找出是什么使得这些Tomcat服务如此特殊,以至于在Windows中控制它们的常规方法不起作用。 他们怎么不工作? 这只是一个访问被拒绝的问题? 如果是这样, ProcMon将非常有用的具体搞清楚需要授予访问权限。