起因:
在linux服务器上,发现root用户部署项目程序后,使用低权限的用户登录查看项目日志时,无权查看日志。
具体表现:
手动生成的其他文件属性为644(“rw-r–r--”),其他人有查看权限;
项目程序生成的日志文件属性为640(即"rw-r-----")。
解决方案:
出现日志文件权限问题,主要考虑2个方面:
中间件掩码设置和日志组件权限设置。
1、日志组件权限修改
一般情况下而言,日志组件属于应用组件,不会对文件的权限造成影响。
文件权限由用户的umask决定 - 在log4j本身没有办法改变它。
非要修改的话,logback没有针对文件限的修改方式,所以暂时不支持直接进行修改;log4j有提供在特定的属性filepermissions,可以进行日志文件的属性设置。
ps单个日志文件修改:
log4j 2.9以上版本可以通过其中中的filePermissions配置完成。
<File name="File" fileName="my.log" filePermissions="rw-r--r--">
<PatternLayout pattern="%m%n" />
</File>
ps:本次主要针对在滚动策略中的文件权限修改,不多作提及。
在滚动策略中修改
<RollingFile name="InfoLog"
fileName="/var/log/myApp/Info.log"
filePattern="/var/log/myApp/Info%d\{yyyy-MM-dd}.%i.log"
filePermissions="rw-r--r--">
</RollingFile>
2、掩码修改
2.1Tomcat掩码修改
(此方法原作者https://www.cnblogs.com/kevingrace/p/11844116.html)
现象描述:
线上机器的程序文件(包括TOMCAT自身)使用APP账号作为属主运行,同时禁止了APP账号的BASH。登录系统使用了统一认证,这样每个人都有自己的账号登录系统。为了方便开发人员登录查看日志,日志文件的文件权限为"rw-r-r&