Debian系统中,Tomcat默认以tomcat用户(及同名组)运行。日志目录(通常为/var/log/tomcat9,版本号可能不同)的所有者需设置为tomcat:tomcat,确保Tomcat进程有权限写入日志。
操作命令:
# 查看Tomcat运行用户(确认是tomcat)
ps aux | grep tomcat
# 更改日志目录所有者(以tomcat9为例)
sudo chown -R tomcat:tomcat /var/log/tomcat9
为平衡安全性与可访问性,日志目录权限建议设置为750(所有者可读/写/执行,组和其他用户无权限);若需允许其他用户(如运维人员)读取日志,可设置为755(所有者可读/写/执行,组和其他用户可读/执行)。
操作命令:
# 设置严格的750权限(推荐生产环境)
sudo chmod -R 750 /var/log/tomcat9
# 或设置宽松的755权限(允许其他用户读取)
sudo chmod -R 755 /var/log/tomcat9
Tomcat启动时会重置UMASK值,默认0027会导致新生成的日志文件权限为640(仅所有者可读/写,组用户不可读),影响团队协作。将UMASK改为0022,可使新日志文件权限为644(所有者可读/写,其他用户可读)。
操作步骤:
编辑/var/lib/tomcat9/bin/catalina.sh(路径随版本可能变化),在文件开头添加:
umask 0022
Logrotate可自动轮换、压缩和删除旧日志,同时通过create指令指定新日志文件的权限和所有者,避免手动维护。
操作步骤:
创建/etc/logrotate.d/tomcat文件,添加以下内容(以tomcat9为例):
/var/log/tomcat9/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 640 tomcat tomcat # 新日志文件权限640,所有者tomcat:tomcat
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/tomcat9.pid 2>/dev/null` 2>/dev/null || true
endscript
}
若使用Log4j2等第三方日志框架,可通过filePermissions属性直接设置日志文件的权限。例如,在log4j2.xml中添加:
<File name="File" fileName="logs/catalina.log" filePermissions="rw-r--r--"/>
完成上述配置后,重启Tomcat服务以应用权限设置:
sudo systemctl restart tomcat9
通过以上步骤,可解决Debian Tomcat日志中的权限问题,确保日志文件能被Tomcat正常写入,同时满足安全性和可访问性需求。