Linux中多種方法實時記錄歷史命令
系統中的歷史命令對於後期排除故障非常有用。一般都需要把歷史命令給儲存起來。
方法1:
實時記錄歷史命令到bash_history,不記錄日誌檔案中
[root@bing~]#vim /etc/bashrc
export HISTTIMEFORMAT=`%F %T ` #讓歷史命令記錄操作時間
export HISTSIZE=1000000 #設定儲存歷史命令條數
export HISTFILESIZE=1000000 #設定儲存歷史命令的檔案大小
shopt -s histappend
PROMPT_COMMAND=`history -a` #實時記錄歷史命令,防止丟失
優點:簡單方便,易設定
缺點:安全性較差,多使用者下,只能分別記錄到各自的.bash_history中,沒有統一管理
方法2:
實時記錄歷史命令到自定義檔案中,不記錄日誌檔案中
[root@bing~]#vim /etc/bashrc
export HISTORY_FILE=/var/.history/date `+%y-%m-%d`
.log #自定義歷史命令儲存檔案
export PROMPT_COMMAND=` { date “+%Y-%m-%d %T – USER:$USER IP:$SSH_CLIENT PS:$SSH_TTY – $(history 1 | { read x cmd; echo “$cmd”; })”; } >> $HISTORY_FILE`
把所有使用者的登入時間、登入地址、操作記錄統一記錄到指定檔案中
優點:可隨意更改存放地址,隱蔽性高,記錄多使用者操作
缺點:安全性還是不高,非法使用者還是可能找到並進行刪除
方法3:(推薦)
實時記錄歷史命令,並記錄到日誌檔案中
[root@bing~]#vim /etc/bashrc
export PROMPT_COMMAND=`history -a { command=$(history 1 | { read x y;echo $y; } );logger -p local1.notice -t bash -i “user=$USER,ppid=$PPID,from=$SSH_CLIENT,pwd=$PWD,command:$command ” }`
[root@bing~]#vim /etc/syslog.conf
local1.notice /var/log/cmd.log
優點:記錄到日誌中,配合日誌伺服器,可把日誌傳送過去,安全性高
方法4:(這個方法我未實際操作過,以下引用別人的實驗)
利用bash的新特性來記錄歷史命令,可記錄到日誌檔案中
使用bash4.1的新功能:歷史命令儲存到syslog!然後使用syslog-ng構建集中型日誌伺服器收集主機日誌。
1 下載bash:
wget http://ftp.gnu.org/gnu/bash/bash-4.1.tar.gz
tar zxvf bash-4.1.tar.gz –C /usr/local/bash-4.1
cd /usr/local/bash-4.1
2 修改引數(根據個人需要,我只保留了pid,uid,sid等,引數請看目錄下的shell.c中):
檔案bashhist.c大約708行的位置開始,修改成以下一段:
syslog (SYSLOG_FACILITY|SYSLOG_LEVEL,”HISTORY: PID=%d PPID=%d SID=%d User=%s CMD=%s”, getpid(),getppid(), getsid(getpid()), current_user.user_name, line);
else
{
strncpy (trunc, line, SYSLOG_MAXLEN);
trunc[SYSLOG_MAXLEN -1]=`0`;
syslog (SYSLOG_FACILITY|SYSLOG_LEVEL,”HISTORY (TRUNCATED): PID=%d PPID=%d SID=%d User=%s CMD=%s”, getpid(),getppid(), getsid(getpid()), current_user.user_name, trunc);
}
注:ppid:bash父程式號
Sid: 跟蹤 su 切換後的程式號
第二段代表log長度超過600後使用的語句
3 去掉config-top.h中define SYSLOG_HISTORY的註釋。
結果如下:
define SYSLOG_HISTORY
4 編譯安裝
./configure & make && make install
5 修改使用者配置:
將使用者的bash換成現在的bash4.1
vi /etc/passwd
dongwm:x:501:501::/home/dongwm:/usr/local/bash_4.1/bin/bash
這樣日誌就會記在/var/log/messages
結果類似這樣:
Dec 2317:40:28 server -bash: HISTORY: PID=4089 PPID=4088 SID=4089 User=dongwm CMD=exit
……
在整個環境佈置了記錄功能,就能方便的查出來誰-在何時,用什麼賬號,做了什麼操作…
6 主機syslog配置(新增日誌伺服器的地址)
vi /etc/syslog.conf
在最後新增一列:
. @server.dongwm.com(你的日誌伺服器的地址)
相關文章
- Linux中禁用命令歷史記錄Linux
- linux 清空歷史執行記錄Linux
- linux歷史命令Linux
- win10怎樣看歷史記錄_win10檢視歷史記錄的方法Win10
- solaris下配置使用SQL*Plus歷史命令記錄SQL
- Linux檢視歷史記錄小技巧Linux
- Linux下mysql的歷史操作記錄LinuxMySql
- TcxMRUEdit 最近歷史記錄
- Linux下快速執行歷史命令的方法Linux
- Linux 中刪除目錄的多種方法Linux
- 修改Kali Linux終端歷史記錄大小Linux
- git重寫歷史記錄Git
- rhel5_script自動記錄操作命令歷史序列
- 取消root命令歷史記錄以增加安全性 (轉)
- linux 下sqlplus 歷史記錄問題LinuxSQL
- win10系統檢視命令提示符歷史記錄的方法Win10
- 實現使用者的歷史記錄功能
- Linux設定歷史命令顯示執行時間Linux
- SAP歷史更改記錄函式函式
- LINUX下SQLPLUS等工具的歷史記錄功能LinuxSQL
- Shell歷史命令
- 【rlwrap】Linux上實現Windows的SQL*Plus儲存SQL歷史記錄功能LinuxWindowsSQL
- git log檢視提交歷史記錄Git
- 理解瀏覽器的歷史記錄瀏覽器
- 瀏覽器歷史記錄的返回瀏覽器
- EBS:銷售訂單歷史記錄
- Oracle中檢視sql命令歷史,檢視rman命令歷史OracleSQL
- win10怎麼清除更新歷史記錄 win10電腦如何清除更新歷史記錄Win10
- Linux上實現Windows的SQL*Plus儲存SQL歷史記錄功能---rlwrap(轉)LinuxWindowsSQL
- Git 學習記錄之演變歷史Git
- ClipboardManager for Mac(剪貼簿歷史記錄管理)Mac
- 清除 GitHub 歷史記錄的隱私資訊Github
- 透過歷史記錄執行本地模型模型
- win10如何關閉工作列歷史記錄_win10工作列歷史記錄怎麼關閉Win10
- shell指令碼自動記錄登入使用者ip和歷史命令指令碼
- Linux 中實時檢視日誌的3種方法Linux
- 7 個實用的操作 Bash 歷史記錄的快捷方式
- win10如何關閉活動歷史記錄_win10系統關閉活動歷史記錄的步驟Win10