linux shell—通过history监控Linux用户登录后的操作

作者: 小疯子 分类: linux 发布时间: 2018-10-30 07:52

参考资料:shell-监控Linux用户登录后的操作,记录history

一、说明

目的是为了记录所有linux用户进入服务器后执行的操作命令,通过history这个已有的功能为基础来进行shell的编写。

二、开始编写shell

  1. vi /etc/profile 在这个文件的最后添加上如下shell代码,为何加到这个文件呢?据我所知因为这个文件是用户登录时会执行的,所以这里就是在用户登录就开始进行history的创建记录啦(注意下面shell的中括号[ ] 和内容之间要有空格,我写的时候就没有保留空格报错啦)
    #history
    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
  2.  source /etc/profile 使脚本立即生效
  3. 解释说明,其中HISTTIMEFORMAT使新执行的 bash 命令才会被打上正确的时间戳;
    HISTFILE更改历史文件名称,默认情况下,命令历史存储在 ~/.bash_history 文件中。

0