天天看点

centos配置history记录每个用户执行过的命令

对于系统管理员而言,history是一个很重要的命令,它能显示出之前在shell中执行 过的命令,如果服务器发生异常,可以从这些命令中分析造成问题的原因。但是history显示的信息有局限性,默认保存最近的1000条命令,从历史信息 中只能看到某个命令的执行有可能导致系统出了问题,对于进一步的追踪问题却无济于事。若能定位到是哪个用户在哪个时间在哪执行的命令,那将是多么愉快的一 件事情!说了这么多,进入正题,centos中具体配置如下:

在/etc/profile中加入以下脚本

#history

USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`

HISTDIR=/usr/share/.history

if [ -z $USER_IP ]

then

USER_IP=`hostname`

fi

if [ ! -d $HISTDIR ]

mkdir -p $HISTDIR

chmod 777 $HISTDIR

if [ ! -d $HISTDIR/${LOGNAME} ]

mkdir -p $HISTDIR/${LOGNAME}

chmod 300 $HISTDIR/${LOGNAME}

export HISTSIZE=4000

DT=`date +%Y%m%d_%H%M%S`

export HISTFILE="$HISTDIR/${LOGNAME}/${USER_IP}.history.$DT"

export HISTTIMEFORMAT="[%Y.%m.%d %H:%M:%S]"

chmod 600 $HISTDIR/${LOGNAME}/*.history* 2>/dev/nul

这段脚本的作用是把每个用户执行的命令记录在/usr/share/.history下以用户名命名的目录下,历史记录文件名根据用户ip和时间命名。打开/usr/share/.history目录会发现里边保存了之前记录的历史命令文件

在/etc/bashrc中加入几个环境变量,用于history命令显示用户ip等内容

HISTFILESIZE=4000

HISTSIZE=4000

HISTTIMEFORMAT="%F %T ${USER_IP} `whoami` "

export HISTTIMEFORMAT

<a href="http://s3.51cto.com/wyfs02/M00/7C/F3/wKiom1bdIJTyPfrbAAAWZU2fjlg283.png" target="_blank"></a>

本文转载:http://blog.csdn.net/a806267365/article/details/40581159

继续阅读