在 Debian 上运行 Tomcat 时,日志权限问题通常出现在以下几种场景:
tomcat 或 www-data)/var/log/tomcat* 权限不对下面按推荐做法说明。
Debian 下常见用户:
ps aux | grep tomcat
一般看到的是:
tomcattomcat9www-data⚠️ 不要用 root 跑 Tomcat
Debian 通过 apt 安装的 Tomcat(如 tomcat9):
/var/log/tomcat9
正确权限示例:
sudo chown -R tomcat:adm /var/log/tomcat9
sudo chmod 750 /var/log/tomcat9
说明:
tomcat:运行用户adm:允许系统管理员读日志750:防止其他用户访问sudo chown tomcat:adm /var/log/tomcat9/*.log
sudo chmod 640 /var/log/tomcat9/*.log
java.io.FileNotFoundException: /var/log/tomcat9/catalina.out
解决:
sudo chown tomcat:tomcat /var/log/tomcat9
sudo chmod 755 /var/log/tomcat9
编辑:
sudo systemctl edit tomcat9
确保:
[Service]
LogsDirectory=/var/log/tomcat9
LogsDirectoryMode=0750
然后:
sudo systemctl daemon-reload
sudo systemctl restart tomcat9
Debian 默认:
/etc/logrotate.d/tomcat9
确保包含:
create 0640 tomcat adm
示例:
/var/log/tomcat9/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 tomcat adm
sharedscripts
postrotate
systemctl reload tomcat9 >/dev/null 2>&1 || true
endscript
}
如果你是自己解压的 Tomcat:
/opt/tomcat/logs
设置:
sudo chown -R tomcat:tomcat /opt/tomcat/logs
sudo chmod 750 /opt/tomcat/logs
✅ 使用专用用户(tomcat)
✅ 日志目录 750
✅ 日志文件 640
✅ 属主 tomcat:adm
✅ logrotate 指定用户和权限
如果你愿意,可以告诉我:
我可以给你精确命令。