在linux系统的环境下,不管是root用户还是其它的用户,登录后的所有操作,均可通过命令history来查看历史记录。
不过,对于一台机器多人登陆,通过查看历史记录(命令:history)则意义不大。
如何才能实现通过记录登陆后的IP地址和某用户名所操作的历史记录呢。
可以通过在/etc/profile里面加入以下代码实现:
复制代码 代码示例:
PS1="`whoami`@`hostname`:"'[$PWD]'
history
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'` #print $NF取最后一个域的字段
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
在系统的/tmp新建个dbasky目录,在目录中记录了所有的登陆过系统的用户和IP地址。
还可以用这个方法来监测系统的安全性。
还可以编辑/etc/bashrc文件,增加history命令的时间显示,加入以下内容:
复制代码 代码示例:
HISTFILESIZE=2000
HISTSIZE=2000
HISTTIMEFORMAT=”%Y%m%d-%H%M%S: ”
export HISTTIMEFORMAT
保存后退出,关闭当前shell,并重新登录,此时在~/.bash_History文件中,就会保存命令执行的时间了。