1. 程式人生 > >linux下檢視所有登入使用者的歷史操作命令

linux下檢視所有登入使用者的歷史操作命令

   最近伺服器出現各種莫名奇怪的問題,可又查不出來到底誰幹的,向度娘一問,給出了下面這位大牛的解決辦法,正是我所欲也!

在linux系統的環境下,不管是root使用者還是其它的使用者只有登陸系統後用進入操作我們都可以通過命令history來檢視歷史記錄,可是假如一臺伺服器多人登陸,一天因為某人誤操作了刪除了重要的資料。這時候通過檢視歷史記錄(命令:history)是沒有什麼意義了(因為history只針對登入使用者下執行有效,即使root使用者也無法得到其它使用者histotry歷史)。那有沒有什麼辦法實現通過記錄登陸後的IP地址和某使用者名稱所操作的歷史記錄呢?答案:有的。

通過在/etc/profile裡面加入以下程式碼就可以實現:

PS1="`whoami`@`hostname`:"'[$PWD]'
history
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]
then
USER_IP=`hostname`
fi
if [ ! -d /tmp/dbasky ]
then
mkdir /tmp/dbasky
chmod 777 /tmp/dbasky
fi
if [ ! -d /tmp/dbasky/${LOGNAME} ]
then
mkdir /tmp/dbasky/${LOGNAME}
chmod 300 /tmp/dbasky/${LOGNAME} fi export HISTSIZE=4096 DT=`date "+%Y-%m-%d_%H:%M:%S"` export HISTFILE="/tmp/dbasky/${LOGNAME}/${USER_IP} dbasky.$DT" chmod 600 /tmp/dbasky/${LOGNAME}/*dbasky* 2>/dev/null

source /etc/profile 使用指令碼生效

退出使用者,重新登入

上面指令碼在系統的/tmp新建個dbasky目錄,記錄所有登陸過系統的使用者和IP地址(檔名),每當使用者登入/退出會建立相應的檔案,該檔案儲存這段使用者登入時期內操作歷史,可以用這個方法來監測系統的安全性。

通過檢視檔案,如下:

[email protected]:[/tmp/dbasky/root]ls
10.1.80.47 dbasky.2013-10-24_12:53:08
[email protected]:[/tmp/dbasky/root]cat 10.1.80.47 dbasky.2013-10-24_12:53:08
[email protected]:[/tmp/dbasky/root]
cd /etc/

(命令列表)

就可以檢視到在12:53:08從10.1.80.47登入的root使用者操作命令歷史

本人測試後的截圖如下:
這裡寫圖片描述