Centos记录全部用户登陆和操做的详细日志

一、原由

最近Linux服务器上一些文件呗篡改,想追查已经查不到记录了,因此得想个办法记录下全部用户的操做记录。linux

通常你们一般会采用history来记录,可是history有个缺陷就是默认是1000行,固然你也能够vim /etc/profile将1000修改为1000000行,可是这只是比较笼统的作法,看不到详细的用户来源已经操做记录,好比来源ip地址、操做时间、操做用户等。nginx

因此咱们不得不本身写代码来实现这样的功能。vim

 

二、自动记录脚本

在/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"spa

”能够看到记录日志的路径是/var/log/history/${LOGNAME},因此这个目录也须要事先创建,有多少个用户,就要创建多少个目录,并且要把目录的使用权限赋予相对应的用户。.net

而每次用户登陆到退出都会产生以用户名、登陆ip地址、操做时间为文件名的文件,文件里面包含本次用户的全部操做记录。日志

 

三、用户登陆验证

用其中一个用户alad登陆进程操做code

[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/查看有最新的记录,一次用户登陆到退出就会保存成一个日志文件记录:blog

#进入日志目录
[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后的内容为以前操做的命令记录,而且带上时间戳!进程

相关文章
相关标签/搜索