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 dbasky@122.234.54.174_20110907_230314
-rw-------  1 nxuser nxgroup 19 Sep  6 23:05 dbasky@122.234.54.174_20110907_230439
[root@ZJ-WAP-SNMP nxuser]$more dbasky@122.234.54.174_20110907_230439
ls
ll
free -m
exit
[root@XXXXXXX nxuser]$pwd
/tmp/dbasky/nxuser
[root@XXXXXXX nxuser]$
 
但是方案三配置后,使用history命令只能查看到本次登录所操作的命令;如需查看之前登录的历史命令,可通过查看~/.bash_History文件。