關於log42j引起的日誌文件權限的問題

背景介紹

咱們的生產環境下有一套TOMCAT下運行的程序,爲了記錄應用日誌,通常都使用Log4j來完成tomcat

環境描述

通常咱們是這樣設置,程序文件(包括TOMCAT自身)使用TOMCAT帳號做爲屬主運行,同時禁止了TOMCAT的BASH。登陸系統使用了統一認證,這樣每一個人都有本身的帳號登陸系統。爲了方便開發人員登陸查看日誌,日誌文件的文件權限爲rw-r-r 同時也是系統默認的umask 因爲TOMCAT和TOMCAT是本地帳號,操做人員使用了統一認證方式,理論上不屬於TOMCAT組的帳號只用於READ權限查看便可。但詭異的事情發生了ide

現象描述

由於日誌比較大,且實時輸出,因此天天確定要作日誌輪詢。好比當天的日誌爲abc.log,那麼昨天的日誌就是abc-20180201.log 這個過程是log4j在凌晨自動切割的。測試

但詭異的是天天輪詢,abc.log的文件權限變成了rw-r----- 既640權限,普通用戶沒有任何權限了。日誌

-rw-r----- 1 tomcat tomcat 5472401566 Jan 14 23:59 abc-2018-01-27.log
-rw-r----- 1 tomcat tomcat 1240070383 Jan 15 11:02 abc.log

開發人員不能檢查應用日誌,這是不行的code

排查過程

首先檢查了目錄的umask開發

[root@z00w00-host abc]# umask
0022

發現是正常的,接着檢查了tomcat的umask,在/etc/profile也沒有異常,同時想到tomcat不能登陸,因此這個地方的檢查意義不大。it

隨後和開發商議,將日誌文件文件權限強行變動,臨時恢復的正常io

-rw-r--r-- 1 tomcat tomcat 5472401566 Jan 14 23:59 abc-2018-01-27.log
-rw-r--r-- 1 tomcat tomcat 1240070383 Jan 15 11:02 abc.log

可是次日,詭異的事情發生了class

-rw-r--r-- 1 tomcat tomcat 5472401566 Jan 14 23:59 abc-2018-01-14.log
-rw-r----- 1 tomcat tomcat 5472401566 Jan 15 23:59 abc-2018-01-15.log
-rw-r----- 1 tomcat tomcat 1240070383 Jan 16 11:02 abc.log

abc.log文件和凌晨切割的文件abc-2018-01-15.log文件權限所有變回640,而強制修改的abc-2018-01-14.log文件屬性沒有改變,因爲文件切割是由log42j控制,因此基本肯定是log4j搞的鬼。登錄

協助開發查了一下log4j2在2.9版本以上有一個filePermissions,能夠指定文件權限。遂通知開發修改了這個BUG

升級程序,重啓測試後,問題解決

相關文章
相關標籤/搜索