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

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

确保 Tomcat7 实例以 tomcat7(或任何其他)用户身份运行的推荐方法是什么?

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

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

答案1

最常见的方式是使用以下命令安装标准tomcat7apt-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

答案2

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

接受的答案很棒,但是因为我在 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 用户的主文件夹。

相关内容