当存在多用户时,同时又有几个人有root权限时,我相信你会需要知道每个人都做了些什么事情!很重要!

实施方案

我们要在系统的profile文件中增加下面的内容,
#记录所有用户的操作记录,排除系统中的用户和root用户
if [ $UID -ge 500 ]; then
exec /usr/bin/script -a -f -q /var/log/$USER-$UID-`date +%Y%m%d%H%M`.log
fi
这样,只要有用户登陆到你的系统,那么系统就会自动对其操作进行记录,用户的任何一个操作都记录到了/var/log/用户名-用户ID-时间.log中了。这个记录文件大家可以自己设置。
关于记录的文件内容,可以用下面三种方法来查看
cat yufei-500-201104141312.log
head -n -1 yufei-500-201104141312.log
tail -n +1 yufei-500-201104141312.log
当然我们可以通过|grep来过滤我们想要的内容
注意:查看上面的LOG,不能用vi more less这三个命令来查看,特别是more和less你什么也看不到。vi看到的里面有很多的乱码。

上面的方式存在一个缺点,就是不能记录到交互的内容(实际上是记录了,只是我们看不到),那么我们可以通过script的scriptreplay对操作进行回放,这样,就对用户的操作一览无遗了。
如果要使用scriptreplay的回放功能,需要跟时间结合,所以需要使用-t进行记录时间。
vi /etc/profile
修改为下面的内容:
if [ $UID -ge 500 ]; then

exec /usr/bin/script -t 2>/var/log/$USER-$UID-`date +%Y%m%d%H%M`.date  -a -f -q /var/log/$USER-$UID-`date +%Y%m%d%H%M`.log
fi
这时候就保存了时间和记录文件,我们就可以通过scriptreplay来查看用户的一举一动了。
scriptreplay的格式是
scriptreplay 时间文件 记录文件

scriptreplay yufei-500-201104141336.date yufei-500-201104141336.log

注:
script和scriptreplay都是由util-linux-ng软件包提供的。