在 Ubuntu 上,Tomcat 日志权限问题通常表现为:
root,但 Tomcat 以 tomcat 用户运行Permission denied 错误下面按最常见原因 + 解决方案说明。
Ubuntu 上 Tomcat 一般不是 root,而是:
ps -ef | grep tomcat
常见用户:
tomcattomcat9tomcat10如果是 apt 安装:
systemctl cat tomcat9 | grep User
ls -ld /var/log/tomcat9
ls -l /var/log/tomcat9
正常应类似:
drwxrwx--- tomcat tomcat
sudo chown -R tomcat:tomcat /var/log/tomcat9
sudo chmod 750 /var/log/tomcat9
如果是手动安装(如 /opt/tomcat):
sudo chown -R tomcat:tomcat /opt/tomcat/logs
java.io.FileNotFoundException: /opt/tomcat/logs/catalina.out (Permission denied)
sudo touch /opt/tomcat/logs/catalina.out
sudo chown tomcat:tomcat /opt/tomcat/logs/catalina.out
sudo chmod 640 /opt/tomcat/logs/catalina.out
如果你用 systemctl 启动 Tomcat:
sudo systemctl edit tomcat9
确保没有错误限制,例如:
[Service]
User=tomcat
Group=tomcat
改完后:
sudo systemctl daemon-reload
sudo systemctl restart tomcat9
Ubuntu 默认有:
/etc/logrotate.d/tomcat9
如果里面没指定 create 用户,日志会被 root 创建。
/var/log/tomcat9/*.log {
daily
missingok
rotate 14
compress
notifempty
create 0640 tomcat tomcat
copytruncate
}
然后测试:
sudo logrotate -d /etc/logrotate.d/tomcat9
Ubuntu 默认是 AppArmor:
sudo aa-status | grep tomcat
如果异常,可临时测试:
sudo systemctl stop apparmor
(生产不建议长期关)
✅ Tomcat 不要使用 root 运行
✅ 日志目录属主 = Tomcat 用户
✅ logrotate 明确指定用户
✅ 权限控制在 750 / 640
如果你能贴出:
我可以给你针对性一步到位方案。