各位后端大佬在日常工作中应该都有遇到过服务器误操作,误删文件,修改错了配置文件等情况。有时候一时可能发现不了失误,等到业务系统报错时才发现失误了,有时候报错的不明显还要排错,或者说某大佬删库跑路但是拥有服务器操作权限的同事又多这时候要排查是谁做的,这个时候就非常头大了。 当然你可以通过history来查看历史命令记录,如果把history记录涂抹掉了,是不是啥也看不到了,如果你想查看在某个时间段到底是谁通过vim编辑过某个文件呢?
那么,有什么办法可以看见这些操作呢,答案是一定有的,具体怎么实现呢,linux script命令正有如此强大的功能,可以满足我们的需求,script可以记录终端会话,只要是linux6.3以上的系统,都会自带script命令,下面我用centos 7系统来测试一下。
首先验证下机器上是否有script命令
[root@localhost ~]# which script // 会得到一个输出 /usr/bin/script
如果机器上没有script命令则会出现一个no script in xxxxxxx的提示,如果机器上没有script命令直接安装一个即可,不懂怎么装问度娘。
接下来就是创建日志目录并写入日志记录脚本了:
// 创建目录
[root@localhost ~]# mkdir /var/log/.script
// 目录赋权
[root@localhost ~]# chmod 777 /var/log/.script
// 编辑profile文件
[root@localhost ~]# vi /etc/profile
将以下代码写入到文件末尾:
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
按Esc建输入:wq!保存脚本,后输入source /etc/profile
然后你就可以重新登录终端随便输入几个命令来验证以下了。
// 进入日志目录
[root@localhost ~]# cd /var/log/.script
// 列出所有操作日志和script回放文件,data是回放的时间文件,log是命令日志文件
[root@localhost ~]# ls
root-1000-201910211629.date root-1000-201910211629.log
// 执行scriptreplay来回放一下操作
[root@localhost ~]# scriptreplay root-1000-201910211629.date root-1000-201910211629.log
注意:先指定“时间文件 .data”,然后是“命令文件 .log”,不要颠倒了。
然后 敲下回车键你就会神奇的发现终端的所有操作就和win下的录屏操作一样全部回放出来了~
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可,非商业性质可转载须署名链接,详见本站版权声明。