思路就是把所有用户运行过的所有命令都记录下来。 虽然系统自带的.bash_history文件可以记录一些日志,但是却记录不及时,很有可能因为用户没有正常退出终端而没有能记录进去。在这里,我们要用的并不是这个history,而是运用了一个小技巧。


创建记录日志的目录

# mkdir -p /usr/local/records/


给它任何用户都能读写的权限

# chmod 777 /usr/local/records/


并且要加上防删除权限,谁的目录只能谁删除,其他用户不能删除

# chmod +t /usr/local/domob/records/


# vi /etc/profile  //编辑/etc/profile,加入如下内容

if [ ! -d  /usr/local/records/${LOGNAME} ]

then

    mkdir -p /usr/local/records/${LOGNAME}

    chmod 300 /usr/local/records/${LOGNAME}

fi

export HISTORY_FILE="/usr/local/records/${LOGNAME}/bash_history"

export PROMPT_COMMAND='{ date "+%Y-%m-%d %T ##### $(who am i |awk "{print \$1\" \"\$2\" \"\$5}") #### $(history 1 | { read x cmd; echo "$cmd"; })"; } >>$HISTORY_FILE'