Centos记录所有⽤户登录和操作的详细⽇志centos vim命令
1、起因
最近服务器上⼀些⽂件呗篡改,想追查已经查不到记录了,所以得想个办法记录下所有⽤户的操作记录。
⼀般⼤家通常会采⽤history来记录,但是history有个缺陷就是默认是1000⾏,当然你也可以vim /etc/profile将1000修改成1000000⾏,但是这只是⽐较笼统的做法,看不到详细的⽤户来源已经操作记录,⽐如来源ip地址、操作时间、操作⽤户等。
所以我们不得不⾃⼰写代码来实现这样的功能。
2、⾃动记录脚本
在/etc/profile⽂件的末尾追加编写脚本如下:
#set user history
history
USER=`whoami`
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]; then
USER_IP=`hostname`
fi
if [ ! -d /var/log/history ]; then
mkdir /var/log/history
chmod 777 /var/log/history
fi
if [ ! -d /var/log/history/${LOGNAME} ]; then
mkdir /var/log/history/${LOGNAME}
chown -R ${LOGNAME}:${LOGNAME} /var/log/history/${LOGNAME}
chmod 770 /var/log/history/${LOGNAME}
fi
export HISTSIZE=4096
DT=`date +"%Y%m%d_%H:%M:%S"`
export HISTFILE="/var/log/history/${LOGNAME}/${USER}@${USER_IP}_$DT"
chmod 660 /var/log/history/${LOGNAME}/*history* 2>/dev/null
这个脚本需要放在/etc/profile⽂件的末尾。这⾥默认写了记录⽇志⽂件的根⽬录是:/var/log/history,这个⽬录需要初始化建⽴,然后通
过“exportHISTFILE="/var/log/history/${LOGNAME}/${USER}@${USER_IP}_$DT"
”可以看到记录⽇志的路径是/var/log/history/${LOGNAME},所以这个⽬录也需要事先建⽴,有多少个⽤户,就要建⽴多少个⽬录,⽽且要把⽬录的使⽤权限赋予相对应的⽤户。
⽽每次⽤户登录到退出都会产⽣以⽤户名、登录ip地址、操作时间为⽂件名的⽂件,⽂件⾥⾯包含本次
⽤户的所有操作记录。
3、⽤户登录验证
⽤其中⼀个⽤户alad登录进程操作
[alad@internal-nginx alad]$touch test_history
[alad@internal-nginx alad]$cat >> test_history << EOF
>123123
>1231435454
EOF
[alad@internal-nginx alad]$ls
test_history
然后退出⽤户(需要退出当前⽤户),重新登录进去⽇志⽬录/var/log/history/alad/查看有最新的记录,⼀次⽤户登录到退出就会保存成⼀个⽇志⽂件记录:
#进⼊⽇志⽬录
[alad@internal-nginx alad]$ cd /var/log/history/alad
/var/log/history/alad
#查看⽇志记录⽂件
[alad@internal-nginx alad]$ ls
alad@192.168.20.199_20190115_17:44:51  alad@192.168.20.199_20190115_17:48:40
#打开操作记录⽇志
[alad@internal-nginx alad]$ cat alad\@192.168.20.199_20190115_17\:48\:40
#1547545726
ls
#1547545788
touch 1
#1547545795
cat >> 1 << EOF
123123
1231435454
EOF
#1547545798
ls
可以清楚的看到cat后的内容为之前操作的命令记录,并且带上时间戳!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。