在 Debian 上给 Tomcat 设置权限,通常主要围绕 运行用户、目录权限、端口权限、systemd 权限 这几个方面。下面按常见场景说明。
Debian 上 Tomcat 一般 不要直接用 root 运行。
grep tomcat /etc/passwd
通常是:
tomcat:x:...
编辑:
sudo systemctl edit tomcat9
(版本可能是 tomcat8 / tomcat10)
加入:
[Service]
User=tomcat
Group=tomcat
假设 Tomcat 安装在:
/opt/tomcat
/var/lib/tomcat9
/var/log/tomcat9
推荐权限:
sudo chown -R tomcat:tomcat /var/lib/tomcat9
sudo chown -R tomcat:tomcat /var/log/tomcat9
sudo chown -R root:tomcat /etc/tomcat9
sudo chown -R tomcat:tomcat /var/lib/tomcat9/webapps
sudo chmod 750 /var/lib/tomcat9/webapps
⚠️ 不要给 webapps 777
Tomcat 默认用:
解决方式:
Nginx / Apache → Tomcat(8080)
sudo setcap CAP_NET_BIND_SERVICE=+eip /usr/lib/jvm/java/bin/java
sudo systemctl edit tomcat9
示例:
[Service]
User=tomcat
Group=tomcat
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ReadWritePaths=/var/lib/tomcat9 /var/log/tomcat9
如果你有上传目录:
sudo mkdir /var/lib/tomcat9/uploads
sudo chown tomcat:tomcat /var/lib/tomcat9/uploads
sudo chmod 750 /var/lib/tomcat9/uploads
Debian 默认 没有 SELinux,只有 AppArmor
如遇问题:
sudo aa-status
| 问题 | 原因 |
|---|---|
| Permission denied | 文件属主不是 tomcat |
| 端口绑定失败 | 端口 < 1024 |
| 应用无法写文件 | 目录无写权限 |
| 启动失败 | systemd 用户错 |
如果你能告诉我:
我可以给你 精确命令。