log4j2 RollingFile滚动后日志文件权限异常排查咨询
Log4j2 RollingFile 滚动后文件权限异常排查方向
进程运行身份检查
滚动后文件属主变为root,优先排查应用运行过程中是否存在身份切换:- 查看应用启动脚本,是否存在
sudo/su切换到root执行部分逻辑的情况; - 检查应用代码中是否有主动切换UID/GID的操作;
- 确认是否有root权限的定时任务、监控工具触发了日志滚动动作。
- 查看应用启动脚本,是否存在
Log4j2版本一致性验证
对比两个环境的Log4j2核心依赖版本(log4j-core、log4j-api),部分旧版本存在滚动文件时权限/身份继承的bug,确保两个环境使用完全相同的版本。系统层面权限上下文排查
- 检查SELinux状态:执行
getenforce,若为Enforcing模式,对比两个环境的SELinux规则,是否存在日志目录的权限策略差异导致文件权限被修改; - 检查日志目录的ACL:执行
getfacl ${sys:application.home}/logs,查看是否存在特殊的访问控制列表,导致新生成文件的默认权限异常; - 验证应用启动时的umask:在应用启动脚本中添加
umask >> ${sys:application.home}/logs/umask.log,确认启动时实际生效的umask是否为0022,避免脚本中覆盖了系统默认umask。
- 检查SELinux状态:执行
压缩工具执行身份检查
Log4j2生成.gz压缩文件时可能调用系统gzip命令,检查两个环境中gzip的执行路径、权限,以及调用该命令的进程身份是否为root,是否存在环境变量差异导致调用了不同的gzip实例。应用启动方式差异
若两个环境启动方式不同(如一个用systemd服务,一个直接命令行):- 检查systemd服务文件中的
User/Group配置,是否正确设置为centos; - 确认systemd服务中是否配置了
UMask参数,确保与系统默认的0022一致。
- 检查systemd服务文件中的
内容的提问来源于stack exchange,提问作者Filip M
相关产品推荐
相关产品推荐

