http://blog.163.com/ly_89/blog/static/1869022992011756434459/




利用 PROMPT_COMMAND 实现审计功能,记录什么用户,在什么时间,做了什么操作,然后将查到的信息记录到一个文件里。


############################################################################################


一. 配置


export HISTORY_FILE=/var/log/`date '+%y-%m-%d'`.log



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'##########################################################################################




添加完成,保存退出,然后使用如下的命令使之生效:


#. /etc/profile



# source /etc/profile


注意:如果没有报错说明成功了。


这样任何操作命令都会在/var/log/日期.log中看到,还可以自己定义目录或者文件


############################################################################################



二、验证


验证日志里面是否有数据,命令如下:


[root@confluencexcs log]# cat 11-08-06.log

11-08-06 03:03:28 ##### root pts/0 (192.168.211.87)  #### ls

11-08-06 03:03:49 ##### root pts/0 (192.168.211.87)  #### ls

11-08-06 03:03:57 ##### root pts/0 (192.168.211.87)  #### cat 11-08-06.log

11-08-06 03:04:17 ##### root pts/0 (192.168.211.87)  #### cat /etc/passwd


可以看到里面已经有数据。


还可以使用:


PROMPT_COMMAND='{ date "+%Y-%m-%d %T ##### USER:$USER IP:$SSH_CLIENT PS:$SSH_TTY #### $(history 1 | { read x cmd; echo "$cmd"; })";

} >>$HISTORY_FILE'


命令不一样但是结果是一样的。


###############################################################################################


添加完成,保存退出,然后使用如下的命令使之生效:


#. /etc/profile



# source /etc/profile


注意:如果没有报错说明成功了。