在 Debian 上部署 Tomcat 时,权限设置的核心目标是:Tomcat 以普通用户运行、对必要目录有读写权限、避免用 root 运行。下面按常见场景说明。
sudo useradd -r -m -d /opt/tomcat -s /bin/false tomcat
-r:系统用户/bin/false:禁止登录假设 Tomcat 在 /opt/tomcat:
sudo chown -R tomcat:tomcat /opt/tomcat
sudo chmod -R 750 /opt/tomcat
关键目录说明:
bin/:执行权限(tomcat 用户)conf/:读权限logs/, temp/, work/, webapps/:写权限/etc/systemd/system/tomcat.service 示例:
[Unit]
Description=Apache Tomcat
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment=JAVA_HOME=/usr/lib/jvm/java-17-openjdk
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now tomcat
sudo chown -R tomcat:tomcat /opt/tomcat/logs /opt/tomcat/work /opt/tomcat/temp
webappssudo chown tomcat:tomcat /opt/tomcat/webapps/app.war
不要直接用 root 跑 Tomcat,用:
setcapsudo setcap CAP_NET_BIND_SERVICE=+eip /usr/lib/jvm/java-17-openjdk/bin/java
sudo apt install tomcat10
特点:
tomcat/var/lib/tomcat10, /etc/tomcat10/var/log/tomcat10权限已由包管理处理好,一般不要手动改 /var/lib/tomcat10 的属主。
webapps/ROOT 或改成自定义如果你能告诉我:
我可以给你精确权限命令。