Linux實時記錄用戶執行的命令

Linux OS下增加實時記錄用戶執行的命令

Linux是一種支持多用戶操作的OS, 經常OS文件做出了一些更改,但是無從查起是誰,是什麼時候做的修改。其實Linux下可以藉助PROMPT_COMMAND這個環境變量實現這一功能,環境變量PROMPT_COMMAND記錄了用戶操作終端命令提示符出現前執行的命令。

添加方法

/etc/profile中添加如下內容

export HISTFILE="/var/log/$(date '+%F').his" #定義保存的命令日誌文件
export HISTTIMEFORMAT='%F %T '	#定義命令日誌格式
export PROMPT_COMMAND='user=$(who am i | sed "s/[ ][ ]*/ /g"); history 1 | { read x date time cmd; echo "${date} ${time} ${user} ${cmd}"; } >> $HISTFILE'	#主要的功能實現
  • HISTFILE定義了要保存的命令日誌文件名格式,這裏是按照當天的日期命名,同一天會記錄在一個文件中。
  • HISTTIMEFORMAT這個是系統環境變量,主要是記錄命令執行的時間格式,支持的格式可以參考date命令的日期時間格式。
  • PROMPT_COMMAND中,user=$(who am i | sed "s/[ ][ ]*/ /g")用於獲取當前登陸的用戶名,這裏不用whoami是有原因的,一直返回空;history 1用於獲取上一條終端執行命令;read x date time cmd; echo "${date} ${time} ${user} ${cmd}";獲取前一個的輸出作爲標準輸入,通過read塊處理功能,分割爲datetimecmd, 分別對應日期,時間,和執行的命令。剩下的就是輸出附加到日誌記錄文件。

應用場景

通過這種方法可以實時記錄每個用戶執行的命令,當然最好是別大家都用相同的賬號登陸,但是這個也考慮到這種情況,記錄會保存登陸者的IP地址。最好是同時使用遠程備份該日誌記錄。如通過NFS,syslog等服務做到實時遠程備份。

如此,刪庫者,無處遁形!👍

日誌記錄

日誌文件格式:

日誌內容記錄:

📌轉載請註明來源,版權歸作者**@hualong1009**所有, 謝謝

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章