在 Debian 上 Tomcat 日志权限问题通常表现为:
catalina.out 或 logs/ 目录无写权限下面按 常见原因 → 正确做法 → 排查步骤 来说明。
tomcat 用户运行,但日志目录属于 rootDebian 默认 Tomcat 用户是:
tomcat
# 或
tomcat9
如果日志目录属于 root:
ls -ld /var/log/tomcat*
看到类似:
drwxr-x--- root root
Tomcat 就无法写日志。
Debian 使用 systemd 管理服务:
systemctl status tomcat9
systemd 并不会自动修复日志目录权限。
catalina.out 权限被 logrotate 改坏/etc/logrotate.d/tomcat9 中如果缺少 create 或 su 配置,会导致:
ps aux | grep tomcat
或:
grep User /lib/systemd/system/tomcat9.service
常见结果:
User=tomcat
Group=tomcat
sudo chown -R tomcat:tomcat /var/log/tomcat9
sudo chmod 750 /var/log/tomcat9
如果还有 catalina.out:
sudo chown tomcat:tomcat /var/log/tomcat9/catalina.out
sudo chown -R tomcat:tomcat /var/lib/tomcat9/{webapps,work,temp}
chmod 777这是错误做法 ❌
编辑:
sudo systemctl edit tomcat9
添加:
[Service]
LogsDirectory=tomcat9
LogsDirectoryMode=0750
保存后:
sudo systemctl daemon-reload
sudo systemctl restart tomcat9
cat /etc/logrotate.d/tomcat9
/var/log/tomcat9/*.log {
daily
rotate 7
missingok
notifempty
compress
copytruncate
create 0640 tomcat tomcat
su tomcat tomcat
}
⚠️ 如果没有:
create ... tomcat tomcat
su tomcat tomcat
必须加上,否则轮转后 Tomcat 无法写日志。
# 1. Tomcat 是否启动失败
systemctl status tomcat9
# 2. 日志目录权限
ls -ld /var/log/tomcat9
# 3. 当前日志文件权限
ls -l /var/log/tomcat9
# 4. 运行用户
ps aux | grep java
# 5. journal 日志
journalctl -u tomcat9 -n 50
❌ 错误:
chmod 777 /var/log/tomcat9
✅ 正确:
chown -R tomcat:tomcat /var/log/tomcat9
tomcat9.servicelogrotate 配置你可以直接贴出:
ls -l /var/log/tomcat*
systemctl status tomcat9