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

Adr*_*Ber 10 tomcat7

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

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

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

Dav*_*que 13

最常见的方法是安装标准tomcat7apt-get并使用以下命令启动它:

sudo service tomcat7 start
Run Code Online (Sandbox Code Playgroud)

/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
Run Code Online (Sandbox Code Playgroud)


ste*_*nix 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. 如果您的网络应用程序正在访问其他文件,例如日志文件配置文件等,那么您也需要更改这些文件的所有权。

  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
Run Code Online (Sandbox Code Playgroud)

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