在Tomcat 8中设置'tomcat'非root用户

我在Debian 8中安装了Tomcat 8,我需要加强web服务器。

我遵循官方的Tomcat文档指南,在安全考虑部分build议创build另一个用户(名为tomcat)并启动Tomcat进程:

Tomcat不应该在root用户下运行。 为Tomcat进程创build一个专用用户,并为该用户提供操作系统所需的最低权限。 例如,使用Tomcat用户不应该可以远程login。

我已经按照指南的build议创build了tomcat用户和组。 我使用以下configuration创build了/etc/systemd/system/tomcat.service文件:

[Unit] Description=Apache Tomcat Web Application Container After=network.target [Service] Type=forking #ExecStart=/opt/tomcat/bin/startup.sh ExecStart=/usr/share/tomcat8/bin/startup.sh #ExecStop=/opt/tomcat/bin/shutdown.sh ExecStart=/usr/share/tomcat8/bin/shutdown.sh User=tomcat Group=tomcat [Install] WantedBy=multi-user.target 

我做了一个软链接:

 root@pc:/lib/systemd/system# ln -s tomcat.service /etc/systemd/system/tomcat.service 

我在systemd中启用了服务:

 root@pc:/lib/systemd/system# systemctl enable tomcat.service Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /lib/systemd/system/tomcat.service. 

现在,当我检查tomcat进程是否正在运行时,我找不到tomcat用户作为进程的所有者:

 tomcat@labnet:/lib/systemd/system$ ps -aux | grep tomcat tomcat8 18116 1.2 8.0 1662560 325140 ? Sl 10:30 1:04 /usr/lib/jvm/default-java/bin/java -Djava.util.logging.config.file=/var/lib/tomcat8/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC -Djava.endorsed.dirs=/usr/share/tomcat8/endorsed -classpath /usr/share/tomcat8/bin/bootstrap.jar:/usr/share/tomcat8/bin/tomcat-juli.jar -Dcatalina.base=/var/lib/tomcat8 -Dcatalina.home=/usr/share/tomcat8 -Djava.io.tmpdir=/tmp/tomcat8-tomcat8-tmp org.apache.catalina.startup.Bootstrap start 

还有另外一个用户叫tomcat8。

使用顶部:

 tomcat@pc:/lib/systemd/system$ top PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 18116 tomcat8 20 0 1662560 325140 21068 S 0,3 8,0 1:04.29 java 

我检查了/ etc / groups,etc / passwd和两个用户都在场:

 tomcat@pc:/lib/systemd/system$ grep tomcat /etc/group tomcat8:x:114: tomcat:x:1005:tomcat root@pc:/etc/tomcat8# grep tomcat /etc/passwd tomcat8:x:108:114::/usr/share/tomcat8:/bin/false tomcat:x:1005:1005:tomcat,,,:/home/tomcat:/bin/bash 

我应该改变什么才能使用tomcat用户呢? 我的猜测是它可能是在这个版本中默认使用的新用户来运行Tomcat进程。

你需要先运行systemctl守护进程重载,然后systemd才会知道你的新的Tomcat服务。