前言
我们在实际工作当中,都碰到过误操作、误删除、误修改过配置文件等等事件。对于没有堡垒机的公司来说,要在 linux
系统上深究到底谁做过配置文件的修改、做过误删除是很头疼的事情,特别是遇到删库跑路的事件,更头大了。当然你可以通过 history
来查看历史命令记录,如果把 history
记录涂抹掉了,是不是啥也看不到了。
Step1. 配置环境
配置 /etc/profile
文件,在末尾添加如下内容:
$ sudo 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`.date -a -f -q /var/log/script/$USER-$UID-`date +%Y%m%d%H%M`.log fi点击复制复制失败已复制
参数 | 含义 |
-f |
如果需要在输出到日志文件的同时,也可以查看日志文件的内容,可以使用 -f 参数。 |
-a |
输出录制的文件,在现有内容上追加新的内容 |
-q |
可以使 script 命令以静默模式运行 |
提示
-f
参数可以用于教学, 两个命令行接 -f
可以实时演示
用户登录执行的操作都会记录到 /var/log/script/*.log
里(保存日志的目录根据你自己定义),我们可以通过 more
、 vi
等命令查看目录里的日志。
注意
- 这里把用户ID大于0的都记录下来了,可以重新登录用户,随便操作一些命令,查看生成的文件。
root
用户的ID
为0
,新建普通用户的UID
是从500
开始的(通过$ cat /etc/password
可以查看用户的UID
),如果你不想记录root
用户的操作,你把if
里面的值改成500
:if [ $UID - ge 500 ]
;
Step2. 创建日志目录
$ sudo mkdir /var/log/script $ sudo chmod 777 /var/log/script/点击复制复制失败已复制
Step3. 环境生效
$ source /etc/profile点击复制复制失败已复制
验证
退出 linux
终端,在重新登录一下,然后随便敲几个命令来看看。
$ ll /var/log/script/ total 8.0K -rw-rw-r-- 1 ubuntu ubuntu 81 Jul 28 11:42 ubuntu-1000-202207281142.date -rw-rw-r-- 1 ubuntu ubuntu 416 Jul 28 11:42 ubuntu-1000-202207281142.log点击复制复制失败已复制
可以看到,在 /var/log/script
目录中,已经产生了 log
和 data
为后缀的文件,并且还看到了 ubuntu
用户和 UID
号 1000
。
其中:
.log
:记录了操作.data
:可以回放操作
我们用 scriptreplay
来回放一下操作,看下效果如何:
$ scriptreplay -d 1 -m 2 -t ubuntu-1000-202207281142.date -s ubuntu-1000-202207281142.log点击复制复制失败已复制