如何在 Windows 中以特定用户身份运行 Tomcat 服务?

如何在 Windows 中以特定用户身份运行 Tomcat 服务?

我需要这样做,以便 Tomcat 可以利用一些 Active Directory 功能,并且需要进行大量搜索才能整理好所有棘手的问题。希望如果我在这里回答自己的问题,可以节省其他人的麻烦。

  • 如何将 Tomcat 7/8/N 作为服务运行?
  • 我如何告诉 TomcatN 服务以哪个用户身份登录?
  • 我如何授予用户权限?

答案1

输入命令时,您应该以管理员身份进行。例如,从 Windows 开始菜单,输入cmd,右键单击cmd.exeCommand 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 serviceAdd 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"

相关内容