linux系统环境下,不管是root用户还是其他的用户只有登录系统后的操作都可以通过命令history查看历史记录。
假如一台服务器有多人登录,一天因为某人误删了重要的数据
这时通过history是没有什么意义的,那有没有办法实现通过记录登录后的ip地址和登录的用户名分类记录操作的历史记录呢?
#vim /etc/profile 配置文件里添加如下代码
#PS1="`whoami`@`hostname`:"'[$PWD]'
history
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]
then
USER_IP=`hostname`
fi
if [ ! -d /tmp/history ]
then
mkdir /tmp/history
chmod 777 /tmp/history
fi
if [ ! -d /tmp/history/${LOGNAME} ]
then
mkdir /tmp/history/${LOGNAME}
chmod 300 /tmp/history/${LOGNAME}
fi
export HISTSIZE=4096
DT=`date +"%Y%m%d_%H%M%S"`
export HISTFILE="/tmp/history/${LOGNAME}/history@${USER_IP}.$DT"
chmod 600 /tmp/history/${LOGNAME}/*history* 2>/dev/null
保存并退出当前shell。
问题:添加代码后虽然不会报错,在/tmp/也能够创建/tmp/dbasky/root,但是不能在/root目录下创建相应的${USER_IP}.dbasky.$DT文件,记录该用户的操作内容。
原因:因为之前在 ~/.bash_profile文件中指定history记录文件
#vim ~/.bash_profile
HISTFILE=/root/.history_history
所以一直不能自动生成/tmp/history/${LOGNAME}/history.${USER_IP}.$DT}文件,把~/.bash_profile中的指定存储文件删除,重新进入bash后,之后的操作就会保存在指定文件中。重启系统后才能看到文件内容,具体操作。
配置重启生效后:
[root@localcentos7_2 ~]# ll /tmp/history/root/
总用量 28
-rw-------. 1 root root 347 9月 28 17:22 10.10.87.43 history.20150928_171814
-rw-------. 1 root root 294 9月 28 17:31 10.10.87.43 history.20150928_172409
-rw-------. 1 root root 120 9月 28 17:32 history.10.10.87.43.20150928_173114
-rw-------. 1 root root 97 9月 28 17:36 history.10.10.87.43.20150928_173542
-rw-------. 1 root root 322 9月 28 17:40 history@10.10.87.43.20150928_173824
-rw-------. 1 root root 500 9月 28 17:45 history@10.10.87.43.20150928_174222
-rw-------. 1 root root 100 9月 28 17:46 history@10.10.87.43.20150928_174537
转载于:https://blog.51cto.com/jschu/1698884