1、自动记录脚本
编写脚本如下:
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}
chmod 300 /var/log/history/${LOGNAME}
fi
export HISTSIZE=4096
DT=
date +"%Y%m%d_%H:%M:%S"
export HISTFILE="/var/log/history/ L O G N A M E / {LOGNAME}/ LOGNAME/{USER}@KaTeX parse error: Expected group after '_' at position 10: {USER_IP}_̲DT"
chmod 600 /var/log/history/${LOGNAME}/history 2>/dev/null
这个脚本需要放在/etc/profile文件的末尾。这里默认写了记录日志文件的根目录是:/var/log/history,这个目录需要初始化建立,然后通过“exportHISTFILE="/var/log/history/ L O G N A M E / {LOGNAME}/ LOGNAME/{USER}@KaTeX parse error: Expected group after '_' at position 10: {USER_IP}_̲DT"
”可以看到记录日志的路径是/var/log/history/${LOGNAME},所以这个目录也需要事先建立,有多少个用户,就要建立多少个目录,而且要把目录的使用权限赋予相对应的用户。
而每次用户登录到退出都会产生以用户名、登录ip地址、操作时间为文件名的文件,文件里面包含本次用户的所有操作记录。
2、建立初始化目录
先去/home查看有多少个用户
[root@azure_test_static1_11_35 history]# ll
total 28
drwxr-xr-x 2 adminuser adminuser 4096 Nov 17 21:53 adminuser
drwxr-xr-x 2 fastdfs fastdfs 4096 Nov 17 21:53 fastdfs
drwxr-xr-x 2 loguser loguser 4096 Nov 17 19:43 loguser
drwxr-xr-x 2 nginx nginx 4096 Nov 17 20:54 nginx
d-wx------ 2 root root 4096 Nov 17 21:53 root
drwxr-xr-x 2 tomcat tomcat 4096 Nov 17 19:42 tomcat
drwxr-xr-x 2 zabbix zabbix 4096 Nov 17 19:42 zabbix
[root@azure_test_static1_11_35 history]#
然后开始建立初始化目录
[root@azure_test_static1_11_35 log]# mkdir /var/log/history/fastdfs
[root@azure_test_static1_11_35 history]# chown fastdfs:fastdfs fastdfs
-R[root@azure_test_static1_11_35 log]# mkdir /var/log/history/tomcat
[root@azure_test_static1_11_35 log]# chown -R tomcat:tomcat
/var/log/history/tomcat[root@azure_test_static1_11_35 log]# mkdir /var/log/history/zabbix
[root@azure_test_static1_11_35 log]# chown -R zabbix:zabbix
/var/log/history/zabbix[root@azure_test_static1_11_35 log]# mkdir /var/log/history/loguser
[root@azure_test_static1_11_35 log]# chown -R loguser:loguser
/var/log/history/loguser[root@azure_test_static1_11_35 log]# mkdir /var/log/history/adminuser
[root@azure_test_static1_11_35 log]# chown -R adminuser:adminuser
/var/log/history/adminuser
3、用户登录验证
用其中一个用户fastdfs登录进程操作
[adminuser@azure_test_static1_11_35 ~]$ sudo -i
[sudo] password for adminuser:
[root@azure_test_static1_11_35 ~]# su - fastdfs
[fastdfs@azure_test_static1_11_35 ~]$ cp test1.log test3.log
[fastdfs@azure_test_static1_11_35 ~]$ echo “test 1”> test3.log
[fastdfs@azure_test_static1_11_35 ~]$ echo “1” >> test3.log
[fastdfs@azure_test_static1_11_35 ~]$ echo “2” >> test3.log
[fastdfs@azure_test_static1_11_35 ~]$ echo “3” >> test3.log
[fastdfs@azure_test_static1_11_35 ~]$ more test3.log
test 1
1
2
3
[fastdfs@azure_test_static1_11_35 ~]$
然后退出用户,重新登录进去日志目录/var/log/history/fastdfs/查看有最新的记录,一次用户登录到退出就会保存成一个日志文件记录:
#进入日志目录
[root@azure_test_static1_11_35 fastdfs]# cd /var/log/history/fastdfs/
#查看有2个操作日志记录
[root@azure_test_static1_11_35 fastdfs]# ll
total 8
-rw------- 1 fastdfs fastdfs 83 Nov 17 21:53 fastdfs@192.168.120.103_20161117_21:53:16
-rw------- 1 fastdfs fastdfs 139 Nov 17 21:59 fastdfs@192.168.120.103_20161117_21:56:47
#打开当前的操作记录日志
[root@azure_test_static1_11_35 fastdfs]# more
fastdfs@192.168.120.103_20161117_21:56:47cp test1.log test3.log
echo “test 1”> test3.log
echo “1” >> test3.log
echo “2” >> test3.log
echo “3” >> test3.log
more test3.log
exit
[root@azure_test_static1_11_35 fastdfs]#
PS:可以看到记录的日志和我们的实际操作保持一致。证明我们要的功能实现了。
转载自:https://blog.csdn.net/tao19910610/article/details/53285010