log user commands

2017-05-20 0 By admin

Linux系统会记录用户登陆系统后执行过的命令;在一定情况下,可以帮助对系统的管理。

配置参数:
HISTTIMEFORMAT = '%F %T ' #日期格式
HISTSIZE = 4000 #保留日志数量
HISTFILE = /var/history #存储文件

缺点:
1、默认的记录用户命令服务,没有记录命令执行的时间。
2、没有记录用户登陆的IP
3、同一个用户的不同会话,记录到同一个文件中;无法根据不同会话分别记录。

优化:
1、每次用户登陆后,根据用户账号、登陆IP和登陆时间确定存储文件名。这样除非同一个用户,同一个IP,同一时刻登陆服务器才会记录到同一个文件中。
2、将上述设置,配置为用户登陆后,自动执行
3、将日志写入一个隐藏目录中。

脚本内容:
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
local 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=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/null

将脚本放在/etc/profile.d/history.sh中。

友情链接:

history