首頁 > 軟體

關於Log42j引發的紀錄檔檔案許可權的問題

2020-06-16 16:54:14

背景介紹

我們的生產環境下有一套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@linuxidc-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

升級程式,重新啟動測試後,問題解決。

本文永久更新連結地址https://www.linuxidc.com/Linux/2018-03/151243.htm


IT145.com E-mail:sddin#qq.com