温馨提示×

ubuntu tomcat日志权限问题

小樊
48
2026-09-12 11:36:37
栏目: 智能运维

在 Ubuntu 上,Tomcat 日志权限问题通常表现为:

  • Tomcat 启动后无法写日志(catalina.out / localhost.log 等)
  • 日志文件属主是 root,但 Tomcat 以 tomcat 用户运行
  • 重启后日志又没权限
  • Permission denied 错误

下面按最常见原因 + 解决方案说明。


一、确认 Tomcat 运行用户

Ubuntu 上 Tomcat 一般不是 root,而是:

ps -ef | grep tomcat

常见用户:

  • tomcat
  • tomcat9
  • tomcat10

如果是 apt 安装:

systemctl cat tomcat9 | grep User

二、日志目录权限问题(最常见)

1. 查看日志目录

ls -ld /var/log/tomcat9
ls -l /var/log/tomcat9

正常应类似:

drwxrwx--- tomcat tomcat

2. 修正权限

sudo chown -R tomcat:tomcat /var/log/tomcat9
sudo chmod 750 /var/log/tomcat9

如果是手动安装(如 /opt/tomcat):

sudo chown -R tomcat:tomcat /opt/tomcat/logs

三、catalina.out 权限问题

问题现象

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

四、systemd 服务文件限制(容易忽略)

如果你用 systemctl 启动 Tomcat:

sudo systemctl edit tomcat9

确保没有错误限制,例如:

[Service]
User=tomcat
Group=tomcat

改完后:

sudo systemctl daemon-reload
sudo systemctl restart tomcat9

五、logrotate 导致权限变化(重启后出问题)

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

六、SELinux / AppArmor(Ubuntu 较少)

Ubuntu 默认是 AppArmor

sudo aa-status | grep tomcat

如果异常,可临时测试:

sudo systemctl stop apparmor

(生产不建议长期关)


七、推荐的安全做法(总结)

✅ Tomcat 不要使用 root 运行
✅ 日志目录属主 = Tomcat 用户
✅ logrotate 明确指定用户
✅ 权限控制在 750 / 640


如果你能贴出:

  • Ubuntu 版本
  • Tomcat 安装方式(apt / 手动)
  • 具体报错日志

我可以给你针对性一步到位方案

0