感谢:https://www.linuxidc.com/Linux/2016-10/136598.htm
方法一
下述追加到/etc/profile
export HISTFILESIZE=10000000
export HISTSIZE=1000000
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
export HISTTIMEFORMAT="[%F %T][`whoami`][${USER_IP}] "
LOGIP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
LOG_DIR=/var/log/history
if [ -z $LOGIP ]
then
LOGIP=`hostname`
fi
if [ ! -d $LOG_DIR ]
then
mkdir -p $LOG_DIR
chmod 777 $LOG_DIR
fi
if [ ! -d $LOG_DIR/${LOGNAME} ]
then
mkdir -p $LOG_DIR/${LOGNAME}
chmod 300 $LOG_DIR/${LOGNAME}
fi
LOGTM=`date +"%Y%m%d_%H%M%S"`
export HISTFILE="$LOG_DIR/${LOGNAME}/${LOGIP}-$LOGTM"
export PROMPT_COMMAND="history -a"
chmod 600 $LOG_DIR/${LOGNAME}/*-* 2>/dev/null
用户所有操作记录到/var/log/history ,
优点:每次用户登录的操作记录为单个文件,操作痕迹清晰
缺点:
1、用户默认目录下.bash_history不再记录用户操作;
2、非实时,用户退出时才生成对应的日志文件;
3、被踢掉的用户没有生成对应的日志文件;
4、记录的日志里面没有对应的目录信息
方法二
export HISTFILESIZE=10000000
export HISTSIZE=1000000
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
export HISTTIMEFORMAT="[%F %T][`whoami`][${USER_IP}] "
export PROMPT_COMMAND='\
if [ -z "$OLD_PWD" ];then
export OLD_PWD=$PWD;
fi;
if [ ! -z "$LAST_CMD" ] && [ "$(history 1)" != "$LAST_CMD" ]; then
logger -t `whoami`_shell_cmd "[$OLD_PWD]$(history 1)";
fi ;
export LAST_CMD="$(history 1)";
export OLD_PWD=$PWD;'
操作记录到/var/log/messages,
优点:实时追加记录,有目录信息;.bash_history文件也有记录;
缺点:所有用户的操作记录到一个文件,操作记录交叉,看起来稍微费劲点。
PS1:查看当前操作记录文件:echo $HISTFILE
PS2:方法二如果没有生效,在/etc/bashrc里面重新配一遍,并注释掉下述几行(如果有的话)
#export HISTSIZE=3000
#export HISTTIMEFORMAT="%F %T "
#export PROMPT_COMMAND="history -a"