通过利用环境变量PROMPT_COMMAND,可以做到将所有用户执行命令的记录,集中记录在一个日志文件。
环境:centos7
1.先创建一个日志文件
touch /var/local/mon.log
chmod 002 /var/local/mon.log
注意权限修改,权限时任意用户可以写,但是所有用户不能读执行,属主和同组用户不可写。
其目的就是达成可以记录但是不让看的目标。当然root用户特殊。
2.修改profile配置
vim /etc/profile
#最下方添加下面内容:
export HISTORY_FILE=/var/local/mon.log
export PROMPT_COMMAND='{ date "+%Y-%m-%d %T ## `hostname` ## $(who am i |awk "{print \$1}") ## $(who am i |awk "{print \$2}") ## $realsourceip ## $(history 1 | { read x cmd; echo " $cmd"; })"; } >>$HISTORY_FILE'
realsourceip=`who am i | awk -F"[()]" '{print $2}'`
生效:
source /etc/profile
PROMPT_COMMAND略作说明:
date +%Y-%m-%d %T 输出生时间
hostname 输出主机名
$(who am i |awk "{print \$1}") 输出用户名
$(who am i |awk "{print \$2}") 输出登陆方式
`who am i | awk -F"[()]" '{print $2}'` 即变量realsourceip,输出登陆ip
$(history 1 | { read x cmd; echo " $cmd"; }) 输出用户执行的命令
#所有数据以“##”作为分隔符