關於log42j引發的日誌文件權限的問題
我們的生產環境下有一套TOMCAT下運行的程序,為了記錄應用日誌,一般都使用Log4j來完成
環境描述
一般我們是這樣設置,程序文件(包括TOMCAT自身)使用TOMCAT賬號作為屬主運行,同時禁止了TOMCAT的BASH。登錄系統使用了統一認證,這樣每個人都有自己的賬號登錄系統。為了方便開發人員登錄查看日誌,日誌文件的文件權限為rw-r-r 同時也是系統默認的umask 由於TOMCAT和TOMCAT是本地賬號,操作人員使用了統一認證方式,理論上不屬於TOMCAT組的賬號只用於READ權限查看即可。但詭異的事情發生了
現象描述
因為日誌比較大,且實時輸出,所以每天肯定要做日誌輪詢。比如當天的日誌為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
開發人員不能檢查應用日誌,這是不行的
排查過程
首先檢查了目錄的umask
[root@z00w00-host abc]# umask
0022
發現是正常的,接著檢查了tomcat的umask,在/etc/profile也沒有異常,同時想到tomcat不能登錄,所以這個地方的檢查意義不大。
隨後和開發商議,將日誌文件文件權限強行變更,臨時恢復的正常
-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
但是第二天,詭異的事情發生了
-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
升級程序,重啟測試後,問題解決
關於log42j引發的日誌文件權限的問題