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