一般我们可以用history命令来查看用户的操作记录,但是这个命令不能记录是哪个用户登录操作的,也不能记录详细的操作时间,且不完整;所以误操作而造成重要的数据丢失,就很难查到是谁操作的。
通过配置/etc/profile 自动生成/var/log/history/{用户目录}来记录用户的操作
- 每次用户登录系统后再登出系统才会生成历史记录文件
- 第一次必须先用root用户登录/登出系统以生成/var/log/history文件,之后才能用普通用户登录,因为普通用户没有创建目录权限
(1) 编辑/etc/profile文件,在文件末尾加入下面代码:
# vim /etc/profile
[root@telecom225 /]# vi /etc/profile
##################### history #####################
# 记录当前用户/来源ip/登录时间
TIME=`date +"%F_%T"`
USER=`whoami`
USER_IP=`who am i|awk -F "[()]+" '{print $2}'`# 创建存放历史记录文件的目录
if [[ -z "$USER_IP" ]]
thenUSER_IP=`hostname`
fiif [[ ! -d /var/log/history ]]
thenmkdir /var/log/historychmod 777 /var/log/history # 这里必须是777,之后普通用户才能在该目录下创建自己的目录
fiif [[ ! -d /var/log/history/${LOGNAME} ]]
thenmkdir /var/log/history/${LOGNAME}chmod 755 /var/log/history/${LOGNAME}
fi
# 定义允许记录历史命令的条数,并立即生效
HISTSIZE=4096
export HISTSIZE
# 创建历史记录文件,并立即生效
HISTFILE="/var/log/history/${LOGNAME}/${USER}_${USER_IP}_$TIME.his"
export HISTFILE(2) 在/var/log/history下会以当前登录用户名新建一个文件夹,每次用户退出后都会产生以用户名、登录IP和登录时间的命名的文件,里面包含此用户本次的所有操作。
[root@telecom225 history]# cd /var/log/history/jerryhe/
[root@telecom225 jerryhe]# ls
jerryhe@180.173.188.252_20130626_14:59:51
jerryhe@180.173.188.252_20130628_14:40:26
jerryhe@180.173.188.252_20130703_09:44:21
jerryhe@180.173.188.252_20130703_11:18:40
jerryhe@180.173.188.252_20130703_11:21:11
jerryhe@180.173.188.252_20130703_14:21:49
jerryhe@180.173.188.252_20130703_14:30:48
jerryhe@180.173.188.252_20130704_13:37:19