如何授予域用户权限来启动和停止Tomcat服务?

我意识到这与这个问题几乎完全相同,但是最大的区别在于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将非常有用的具体搞清楚需要授予访问权限。