遇到问题:公司增加了运维管理员,为确保服务器安全,和发生问题的时候好确认问题,需要记录每位服务器登陆者的行为轨迹。
解决问题:linux script 命令正有如此强大的功能。满足我们需求。script记录终端会话。
操作步骤:
我是centos6.5系统, 自带script命令,如果没有,大家需手动安装。
[root@myweb script]# cat /etc/redhat-release CentOS release 6.5 (Final)编辑全局系统环境变量文件
vim /etc/profile在末尾添加:
if [ $UID -ge 1000 ]; then exec /usr/bin/script -t 2>/mnt/log/script/$USER-$UID-`date +%Y%m%d%H%M`.date -a -f -q /mnt/log/script/$USER-$UID-`date +%Y%m%d%H%M`.log fi这样用户登陆后执行的操作都会记录到/mnt/log/script/*.log(目录自己根据服务器目录定义)里,我们可以通过more或vi来进行查看。 我这里是把用户ID 大于1000的都记录下操作,你可以重新登录用户,操作一些命令,查看生成的文件。 另外,/mnt/log/script 目录需要其他用户有写的权限;
[root@myweb ~]# chmod 743 /mnt/log/script/ [root@myweb ~]# ll /mnt/log/script/ 总用量 16 -rw-rw-r-- 1 dd dd 338 7月 1 01:27 dd-1003-201507010126.date -rw-rw-r-- 1 dd dd 225 7月 1 01:27 dd-1003-201507010126.log -rw-rw-r-- 1 dd dd 215 7月 1 01:31 dd-1003-201507010130.date -rw-rw-r-- 1 dd dd 188 7月 1 01:31 dd-1003-201507010130.log [root@myweb /]# ll -d /mnt/log/script/ drwxr---wx 2 root root 4096 7月 1 01:30 /mnt/log/script/可以看到上图,对应的用户登录,会分别生成一个log和date为后缀的文件。log记录了操作,可以通过date文件 回放操作。通过scriptreplay 来回放
[aa@myweb dd]$ [root@myweb script]# ll 总用量 24 -rw-rw-r-- 1 dd dd 338 7月 1 01:27 dd-1003-201507010126.date -rw-rw-r-- 1 dd dd 225 7月 1 01:27 dd-1003-201507010126.log -rw-rw-r-- 1 dd dd 215 7月 1 01:31 dd-1003-201507010130.date -rw-rw-r-- 1 dd dd 188 7月 1 01:31 dd-1003-201507010130.log -rw-rw-r-- 1 dd dd 257 7月 1 01:36 dd-1003-201507010135.date -rw-rw-r-- 1 dd dd 280 7月 1 01:36 dd-1003-201507010135.log [root@myweb script]# scriptreplay dd-1003-201507010126.date dd-1003-201507010126.log [dd@myweb ~]$ ls [dd@myweb ~]$ ls [dd@myweb ~]$ ls [dd@myweb ~]$ cd /mnt/ [dd@myweb mnt]$ ls ls: 无法打开目录.: 权限不够 [root@myweb script]#是 “时间文件”,然后是“命令文件”,不要颠倒。 以上,就完成了记录用户的所有操作记录。并且还有回放功能,像录像一样,非常方便查找问题。 转载至:http://mengsir.blog.51cto.com/2992083/1665628
二〇一五年七月一日 10:18:16
评论区