linux下可通過history命令查看用戶所有的歷史操作記錄。
在未進行附加配置情況下,history命令只能查看用戶歷史操作記錄,而並不能區分用戶以及操作時間。
下面是如何滿足這2個功能的配置情況:
方案一:臨時查看操作命令及對應操作時間
每次登錄系統後,在系統下輸入export HISTTIMEFORMAT='%F %T '命令,可查詢時間
配置後效果顯示:
[nxuser@XXXXXX ~]$export HISTTIMEFORMAT='%F %T '
[nxuser@XXXXXX ~]$history
1 2011-09-06 11:42:38 history
2 2011-09-06 11:42:43 history |more
3 2011-09-06 11:43:24 more ~/.bash_history
4 2011-09-06 11:43:41 ll
但是這隻針對當前用戶,用戶重新登錄該配置失效。
方案二:永久保存配置,需要能通過history命令查看到相應操作記錄的操作時間
編輯/etc/bashrc文件,加入如下四行:
HISTFILESIZE=2000
HISTSIZE=2000
HISTTIMEFORMAT='%F %T '
export HISTTIMEFORMAT
配置後效果顯示:
[root@XXXXXXXX ~]$history
1 2011-09-06 14:49:14 history
[root@XXXXXXXX ~]$
方案三:實現登陸過系統的用戶、IP地址、操作命令以及操作時間一一對應
通過在/etc/profile裏面加入以下代碼就可以實現:
#history
PS1="[\u@\h \W]\$"
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 -d '0 day' +\%Y\%m\%d_\%H\%M\%S`
export HISTFILE="/tmp/dbasky/${LOGNAME}/dbasky@${USER_IP}_$DT"
chmod 600 /tmp/dbasky/${LOGNAME}/*dbasky* 2>/dev/null
其實通過上面的代碼不難看出,在系統的/tmp新建個dbasky目錄,在目錄中記錄了所有的登陸過系統的用戶和IP地址。
實現後效果如下:
[root@XXXXXX nxuser]$ll
total 8
-rw------- 1 nxuser nxgroup 15 Sep 6 23:04 [email protected]_20110907_230314
-rw------- 1 nxuser nxgroup 19 Sep 6 23:05 [email protected]_20110907_230439
[root@ZJ-WAP-SNMP nxuser]$more [email protected]_20110907_230439
ls
ll
free -m
exit
[root@XXXXXXX nxuser]$pwd
/tmp/dbasky/nxuser
[root@XXXXXXX nxuser]$
但是方案三配置後,使用history命令只能查看到本次登錄所操作的命令;如需查看之前登錄的歷史命令,可通過查看~/.bash_History文件。