在 Ubuntu 上设置 Tomcat 日志权限,核心原则是:日志目录和文件要让运行 Tomcat 的用户(通常是 tomcat 或 www-data)能写,同时兼顾安全。下面分场景说明。
ps aux | grep tomcat
常见用户:
tomcatwww-data假设运行用户是 tomcat。
常见路径:
/var/log/tomcat9/
/opt/tomcat/logs/
(版本不同路径不同)
sudo chown -R tomcat:tomcat /var/log/tomcat9
sudo chmod 750 /var/log/tomcat9
sudo chmod 640 /var/log/tomcat9/*.log
说明:
750:属主可读写执行(进入目录),组用户可读,其他无权限640:tomcat 可写,组可读,其他无Ubuntu 默认会用 logrotate 切割 Tomcat 日志。
编辑:
sudo vim /etc/logrotate.d/tomcat9
示例:
/var/log/tomcat9/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 640 tomcat tomcat
sharedscripts
postrotate
systemctl reload tomcat9 > /dev/null 2>&1 || true
endscript
}
关键点:
create 640 tomcat tomcat
保证切割后的新日志权限正确。
如果你发现日志写不进去,检查:
/opt/tomcat/conf/logging.properties
确保目录存在且可写,例如:
1catalina.org.apache.juli.AsyncFileHandler.directory = /var/log/tomcat9
Permission denied
解决:
sudo chown -R tomcat:tomcat /var/log/tomcat9
PrivateTmp=true)检查:
systemctl cat tomcat9
如有:
PrivateTmp=true
日志可能在:
/tmp/systemd-private-xxx/tomcat9/
✅ 不要用 777
✅ 不要让 root 运行 Tomcat
✅ 日志目录只对 tomcat 用户可写
如果你能告诉我:
我可以给你精确命令。