以tomcat7(或任何其他)用户身份运行Tomcat7


10

建议使用哪种方法来确保Tomcat7实例以tomcat7(或任何其他)用户身份运行?

我想我可以在顶部修改tomcat7-instance/bin/startup.shtomcat7-instance/bin/shutdown.sh添加“ su tomcat7”。

在Tomcat6中,我认为这是环境变量TOMCAT6_USER


如果您要求“安全方式”,最有可能引起争论。现在,如果您询问“如何为tomcat7设置其他用户?” 那是负责任的。顺便说一句,tomcat从用户tomcat开始,据我所知,如果您安装了deb软件包
。– Braiam 2013年

Answers:


13

最常见的方法是使用安装标准tomcat7软件包apt-get并使用以下方法启动它:

sudo service tomcat7 start

/etc/default/tomcat7以下摘录所示,默认用户和组已配置为:

# Run Tomcat as this user ID. Not setting this or leaving it blank will use the
# default of tomcat7.
TOMCAT7_USER=tomcat7

# Run Tomcat as this group ID. Not setting this or leaving it blank will use
# the default of tomcat7.
TOMCAT7_GROUP=tomcat7

我一直在寻找TOMCAT7_USER和TOMCAT7_GROUP。感谢
Adrian Ber

我在tomcat7-instance / bin / setenv.sh中修改了TOMCAT7_USER并启动了服务器。但是,如果我使用ps显示该进程,则该用户不是TOMCAT7_USER中指定的用户。
阿德里安·伯

为什么不直接在中进行修改/etc/default/tomcat7
David Levesque 2013年

假设我有两个Tomcat用户实例,我想以不同的用户身份启动它们。
Adrian Ber

我不熟悉这种情况,但是在这种情况下,我认为您不能将Tomcat作为服务运行,并且上述配置不适用。也许您应该问一个单独的问题。
David Levesque 2013年

11

编辑:请阅读下面的评论!此解决方案可能不适用于所有情况。

可接受的答案很好,但是由于我是在Ubuntu 14.04上运行Tomcat 7的,因此我还需要做一些其他事情才能使一切运行:

  1. 您需要在编辑文件之前停止tomcat服务/etc/default/tomcat7。更改用户和组后,将无法再使用旧用户停止服务。
  2. 更改文件中的用户和组 /etc/default/tomcat7

  3. 您需要更改文件夹/var/log/tomcat7及其所有文件的所有权。请注意,保留adm组以使所有adm用户都可以阅读日志是有利的。

    sudo chown -R newuser:adm /var/log/tomcat7

  4. 更改文件夹的所有权 /var/lib/tomcat7/webapps

    sudo chown -R newuser:newgroup /var/lib/tomcat7/webapps

  5. 如果在Ubuntu 14.04的端口80/443上运行,则需要更改authbind文件的所有权:

    sudo chown newuser /etc/authbind/byport/80

    sudo chown newuser /etc/authbind/byport/443

  6. 更改工作文件夹的所有权

    sudo chown newuser:adm /var/cache/tomcat7

    sudo chown -R newuser:newgroup /var/cache/tomcat7/Catalina

  7. 使配置文件可读。这里有两个选项:通过以下方式将您的新用户添加到tomcat7组:

    sudo usermod -a -G tomcat7 newuser

    ...或更改配置文件的所有权:

    sudo chown -R :newgroup /var/lib/tomcat7/conf/*

  8. 如果您有其他Web应用程序正在访问的文件,例如日志文件配置文件等,那么您还需要更改这些文件的所有权。

  9. 现在,一切准备就绪,可以再次与新用户一起启动该服务。

编辑2:升级到tomcat 8和Ubuntu 18.04之后,以其他用户身份运行tomcat时出现另一个问题。在脚本中/etc/init.d/tomcat8,以下行似乎更改了tomcat用户的主文件夹,但如果使用其他用户,结果将不是您想要的。

usermod --home /var/lib/tomcat8 $TOMCAT8_USER > /dev/null 2>&1 || true

通过删除或注释掉该行,可以避免为新的tomcat用户更改主文件夹。


您的答案有很大的问题。在下一次tomcat7软件包升级(安全修复/错误修复)时,您的设置将中断,因为apt将使用同一用户(tomcat7)再次安装新的tomcat7软件包版本。因此,您不能进行无人值守的升级,而必须记住在每次升级后都将其插入。
user323094 2015年

我没有意识到这一点,并且目前也没有任何好的解决方案。有什么建议吗?
stenix

Tomcat9中没有这样的文件。
Stephane
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.