确保 Tomcat7 实例以 tomcat7(或任何其他)用户身份运行的推荐方法是什么?
我想我可以修改tomcat7-instance/bin/startup.sh
并tomcat7-instance/bin/shutdown.sh
在顶部添加“su tomcat7”。
在 Tomcat6 中我认为它是环境变量TOMCAT6_USER
。
答案1
最常见的方式是使用以下命令安装标准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
答案2
编辑:请阅读下面的评论!此解决方案可能不适用于所有情况。
接受的答案很棒,但是因为我在 Ubuntu 14.04 上运行 Tomcat 7,所以我需要做一些额外的事情才能让一切运行:
- 您需要在编辑文件之前停止 tomcat 服务
/etc/default/tomcat7
。一旦更改用户和组,将无法再使用旧用户停止服务。 更改文件中的用户和组
/etc/default/tomcat7
您需要更改文件夹
/var/log/tomcat7
及其所有文件的所有权。请注意,保留 adm 组是有利的,这样所有 adm 用户都可以读取日志。sudo chown -R newuser:adm /var/log/tomcat7
更改文件夹的所有权
/var/lib/tomcat7/webapps
sudo chown -R newuser:newgroup /var/lib/tomcat7/webapps
如果在 Ubuntu 14.04 的 80/443 端口上运行,则需要更改 authbind 文件的所有权:
sudo chown newuser /etc/authbind/byport/80
sudo chown newuser /etc/authbind/byport/443
更改工作文件夹的所有权
sudo chown newuser:adm /var/cache/tomcat7
sudo chown -R newuser:newgroup /var/cache/tomcat7/Catalina
使配置文件可读。这里您有两个选择:通过以下方式将新用户添加到 tomcat7 组:
sudo usermod -a -G tomcat7 newuser
...或者更改配置文件的所有权:
sudo chown -R :newgroup /var/lib/tomcat7/conf/*
如果您的 Web 应用程序正在访问其他文件(例如日志文件配置文件等),那么您也需要更改这些文件的所有权。
- 现在,一切准备就绪,可以重新启动新用户该服务了。
编辑 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 用户的主文件夹。