我已经在 Debian 8 中安装了 Tomcat 8,并且需要强化 Web 服务器。
我遵循 Tomcat 官方文档指南,并在安全注意事项部分建议创建另一个用户(名为 tomcat)并使用该用户启动 Tomcat 进程:
Tomcat 不应在 root 用户下运行。为 Tomcat 进程创建专用用户,并为该用户提供操作系统所需的最低权限。例如,不应使用 Tomcat 用户进行远程登录。
我按照指南的建议创建了 tomcat 用户和组。我创建了 /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 进程的新用户。
答案1
您需要运行 systemctl daemon-reload,然后 systemd 才会意识到您的新 Tomcat 服务。