在 Debian 上配置 Tomcat 的权限,通常分为几个层面:系统用户权限、目录权限、Tomcat 自身权限(如 manager 后台)、以及安全限制。下面按常见场景说明。
Debian 上通过 apt 安装的 Tomcat(如 tomcat9 / tomcat10)默认不用 root 运行,而是:
tomcattomcat查看:
ps aux | grep tomcat
如果你是自己解压的 Tomcat,建议不要 root 跑:
useradd -r -s /bin/false tomcat
chown -R tomcat:tomcat /opt/tomcat
假设 Tomcat 在 /opt/tomcat:
chown -R tomcat:tomcat /opt/tomcat
| 目录 | 权限 |
|---|---|
| bin | 750 |
| conf | 640(tomcat 可读) |
| logs | 750 |
| webapps | 750 |
| temp / work | 750 |
示例:
chmod 750 /opt/tomcat/bin
chmod 640 /opt/tomcat/conf/*
⚠️ conf 绝不能 777
编辑:
/etc/tomcat9/tomcat-users.xml
或
/opt/tomcat/conf/tomcat-users.xml
示例(最小权限):
<role rolename="manager-gui"/>
<user username="admin" password="强密码" roles="manager-gui"/>
⚠️ 生产环境:
编辑:
/etc/tomcat9/Catalina/localhost/manager.xml
<Context privileged="true"
antiResourceLocking="false">
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.0\.0\.1|192\.168\.1\.\d+" />
</Context>
查看:
systemctl cat tomcat9
可加强安全:
[Service]
User=tomcat
Group=tomcat
NoNewPrivileges=true
ProtectSystem=strict
ReadWritePaths=/opt/tomcat/logs /opt/tomcat/webapps
重新加载:
systemctl daemon-reload
systemctl restart tomcat9
只开必要端口:
ufw allow 8080
或放 Nginx 反代:
location / {
proxy_pass http://127.0.0.1:8080;
}
❌ 用 root 跑 Tomcat
❌ webapps 777
❌ manager 公网暴露
❌ 密码写在代码里
如果你能说明:
我可以直接给你针对性配置命令。