在 Tomcat 8 中设置“tomcat”非 root 用户

在 Tomcat 8 中设置“tomcat”非 root 用户

我已经在 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 服务。

相关内容