遇到问题:公司增加了运维管理员,为确保服务器安全,和发生问题的时候好确认问题,需要记录每位服务器登陆者的行为轨迹。

解决问题:linux script 命令正有如此强大的功能。满足我们需求。script记录终端会话。

操作步骤:

  1. 我是centos6.3系统, 自带script命令,如果没有,大家需手动安装。

  2. 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 目录需要其他用户有写的权限;

chmod 743 /mnt/log/script

wKioL1WSE3vD9Qj9AAG1iUQp9dI759.jpg

wKioL1WLvI-Bmp58AAN4mlzVfZg267.jpg


可以看到上图,对应的用户登录,会分别生成一个log和date为后缀的文件。log记录了操作,可以通过date文件 回放操作。通过scriptreplay 来回放wKiom1WLvEbhw9GYAACX1GpTVjE631.jpg注意:先是 “时间文件”,然后是“命令文件”,不要颠倒。
以上,就完成了记录用户的所有操作记录。并且还有回放功能,像录像一样,非常方便查找问题。