有时候需要看一下个各用户的操作记录,相对于写一大串history的命令,我更推荐linux中的script命令。

需要linux版本支持script命令。

1 查看服务器是否有script命令

[root@localhost ~]# which script
/usr/bin/script

如果有的话,则会返回命令路径

2 在/etc/profile 文件后面追加一段代码

[root@localhost ~]# vim /etc/profile

if [ $UID -ge 0 ]; then
        exec /usr/bin/script -t 2>/var/log/script/$USER-$UID-`date +%Y%m%d%H%M`.data -a -f -q /var/log/script/$USER-$UID-`date +%Y%m%d%H%M`.log
fi

参数说明:

-t 指明输出录制的时间数据

-f 如果需要在输出到日志文件的同时,也可以查看日志文件的内容,可以使用 -f 参数。PS:可以用于教学,两个命令行接-f可以实时演示

-a 输出录制的文件,在现有内容上追加新的内容

-q 可以使script命令以静默模式运行

编辑完,如下图所示

脚本说明:

  1. 用户登录执行的操作都会记录到/var/log/script/*.log  里,文件名是以用户名-用户id-登陆时间.log命令,可以自行更改
  2. 其中$UID -ge 0是记录用户id>=0的用户记录,其中包括root用户,如果只是想监视普通用户,则这里改成$UID -ge 500,注:linux创建普通用户id从500开始

3 创建存放日志文件目录

根据上面的语句,因为省去了检测日志文件目录是否存在,不存在则创建这个过程,所以我们要提前创建好存放目录

[root@localhost ~]# mkdir /var/log/script

#等下我解释一下为啥要733
[root@localhost ~]# chmod 733 /var/log/script/

4 将配置文件生效

[root@localhost ~]# source  /etc/profile

5 测试一下脚本是否有生效

退出终端工具,重新登陆,然后随便输入点命令

[root@localhost script]# cd /var/log/script/

[root@localhost script]# ls -l
total 404
-rw-r--r-- 1 root root     24 Feb 12 15:05 root-0-201902121505.data
-rw-r--r-- 1 root root    127 Feb 12 15:05 root-0-201902121505.log
-rw-r--r-- 1 root root  19057 Feb 12 15:14 root-0-201902121507.data
-rw-r--r-- 1 root root 147342 Feb 12 15:14 root-0-201902121507.log
-rw-r--r-- 1 root root  47258 Feb 12 16:11 root-0-201902121515.data
-rw-r--r-- 1 root root 177989 Feb 12 16:11 root-0-201902121515.log

其中我们可以看到最近的log以及data文件,其中*.log是操作日志,一般是乱码,有点难看,不过认真看还是能看到点操作顺序;*.data文件则是执行回放的数据文件

6 进行操作日志回放

这个比较得劲,可以将log中的所有的操作记录倒放,tmux中里面的操作也可以记录,亲测。

[root@iZ2zeig01gathmwi1d8nl6Z script]# scriptreplay root-0-201902121515.data root-0-201902121515.log

说明:使用scriptreplay命令,第一个参数是我们要看的data文件,第二个参数是配套对应的log文件,顺序不要调转了。

7 结果演示

8 其他

当操作用户是其他用户,比如liang,然后既能让script执行记录日志到/var/log/script/目录内,又不能让liang删除日志文件,所以把用户以及其他组成员的读目录的权限取消就可以了,所以就是上图中的chmod 733 sciprt/

参考链接:

http://blog.51cto.com/ganbing/2053636

您或许感兴趣

发表评论

电子邮件地址不会被公开。