我需要这样做,以便 Tomcat 可以利用一些 Active Directory 功能,并且需要进行大量搜索才能整理好所有棘手的问题。希望如果我在这里回答自己的问题,可以节省其他人的麻烦。
- 如何将 Tomcat 7/8/N 作为服务运行?
- 我如何告诉 TomcatN 服务以哪个用户身份登录?
- 我如何授予用户权限?
答案1
输入命令时,您应该以管理员身份进行。例如,从 Windows 开始菜单,输入cmd
,右键单击cmd.exe
或Command Prompt
它提供的 ,然后选择Run as administrator
。
将 TomcatN 安装为服务:
只需运行 tomcatc:\path\to\TomcatN\bin\service.bat
并为其指定一个要使用的服务名称,即Tomcat8
。或者,
sc Create TomcatN binPath= "c:\path\to\TomcatN\bin\tomcatN.exe" displayName= "Apache Tomcat N"
设置服务以特定用户身份运行:
大多数情况下您不需要这样做。但有时您需要以注册用户身份访问 Windows 网络。例如,如果您正在利用某些 Active Directory 功能。它可能使用以下内容:
C:\path\to\tomcatN\bin\service.bat install TomcatN --user=George --password=abc123
但可能不行。您可以手动配置服务。
手动配置服务以使用特定的用户名和密码:
从 Windows 命令提示符中,您可以使用服务配置器。一些感兴趣的命令:
sc
sc query TomcatN
sc qc TomcatN
sc config TomcatN obj= "MyHostName\George" password= "abc123"
请留意最后一个命令中等号后面的空格。
确保用户具有权限:
输入gpedit.msc
命令。在出现的 GUI 中,导航至
Local Computer Policy | ...
- Computer Configuration | ...
- Windows Settings | []Log on as a service
- Security Settings | ...
User Rights Assignment | ...
双击Log on as a service
和Add User or Group...
。在字段中输入您希望服务使用的用户名的简写,单击Check Names
,然后按“确定”。
确认 TomcatN 正在按预期运行:
您可以使用以下命令来启动、停止和检查服务的状态:
net start TomcatN
net stop TomcatN
sc query TomcatN
检查登录是否按预期工作
确保您已启动服务。打开 Windows 任务管理器并查看“进程”选项卡。Show processes from all users
如有必要,请单击。TomcatN
应该会列出,旁边是您指定的用户名。
答案2
service.bat 不再支持 --password 参数,但按照上述方法运行 sc config 来更改帐户可以正常工作。我还尝试使用 RunAs 并创建计划任务,但这两种方法都不起作用。
服务帐户还需要访问 tomcat 目录的权限,以便它可以读取自己的文件并写入日志,但互联网服务绝不应允许自我更新,否则它们很容易受到攻击。还需要访问任何其他提供输入和接收来自 tomcat 应用程序的输出的目录的权限。
icacls directory-containing-input-to-tomcat /grant "the-service-account:(OI)(CI)R" /T
icacls directory-receiving-output-tomcat /grant "the-service-account:(OI)(CI)W" /T
要通过命令行授予“作为服务登录”,请使用 ntrights.exe 而不是 gpedit.msc。我在包含 Windows Server 2003 资源工具包工具的 rktools.msi 中找到了 ntrights.exe。
ntrights.exe +r SeServiceLogonRight -u "the-service-account"