Linux 记录登录用户的行为
主要功能:
可以记录哪个ip和时间(精确到秒)作了哪些命令
通过用户登录时候,重新定义HISTFILE
HISTFILE文件名包含登录用户名,ip,登录时间(精确到秒)等
这样即使相同的用户从不同ip、在不同的时间登录都会被记录
可以记录每条命令的开始执行时间
把下面的代码直接粘贴到/etc/profile后面就可以了
#history 2011/07/13 add this code to test
access log
export HISTTIMEFORMAT="[%Y.%m.%d
%H:%M:%S]"
USER_IP=`who –u am i
2>/dev/null| awk '{print $NF}'|sed -e
's/[()]//g'`
HISTDIR=/var/log/.hist
if [[ -z $USER_IP ]]; then
USER_IP=`hostname`
fi
if [[ ! -d $HISTDIR ]]; then
mkdir -p $HISTDIR
chmod 777 $HISTDIR
fi
if [[ ! -d $HISTDIR/${LOGNAME} ]];
then
mkdir -p $HISTDIR/${LOGNAME}
chmod 300 $HISTDIR/${LOGNAME}
fi
export HISTSIZE=4096
DT=`date +%Y%m%d_%H%M%S`
export
HISTFILE="$HISTDIR/${LOGNAME}/${USER_IP}.hist.$DT"
chmod 600 $HISTDIR/${LOGNAME}/*.hist*
2>/dev/null
保存好以后,让/etc/profile立即生效执行:
#. /etc/profile
得到的结果,永久保存,每个用户的命令记录分目录保存
# ls -l /var/log/.hist/root/
-rw------- 1 root root 546 2006-05-26 10:00
218.82.245.54.hist.20060526_092458
-rw------- 1 root root 243 2006-05-28 13:28
218.82.245.54.hist.20060528_114822
-rw------- 1 root root 10 2006-05-28 12:18
218.82.245.54.hist.20060528_121605
查看命令记录
# export
HISTFILE=/var/log/.hist/root/222.72.16.204.hist.20060608_152551
# history
就可以看到执行过的行为动作了!~