在linux系统的环境下,不管是root用户还是其它的用户只有登陆系统后用进入操作我们都可以通过命令history来查看历史记录,可是假如一台服务器多人登陆,一天因为某人误操作了删除了重要的数据。这时候通过查看历史记录(命令:history)是没有什么意义了。那有没有什么办法实现通过记录登陆后的IP地址和某用户名所操作的历史记录呢?答案:有的。
编辑 /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}/${USER_IP} history.$DT"
- chmod 600 /tmp/history/${LOGNAME}/*history* 2>/dev/null
其实通过上面的代码不能看出来,在系统的/tmp新建个history目录,在目录中记录了所有的登陆过系统的用户和IP地址,是不是觉得很方便呢?我们还可以用这个方法来监测系统的安全性。
方法二、
========================================================
- 一、如果你的系统有多个用户,你想知道每个用户登录系统做了哪些操作,从那里登录的,登录时间等待一系列信息,那么请按我的做吧。
- 二、编辑脚本
- vi /etc/profile.d/accountlog.sh
- historyLog(){
- logDir=/data/accountlog
- dateStamp=`date +"[%F %T]"`
- dateDir="`date +%Y`/`date +%m`/`date +%d`"
- curHistory=`history 1`
- user=`/usr/bin/whoami`
- realUserInfor=`/usr/bin/who -u am i|awk '{print $1,$2,$3"~"$4,$7}'`
- if [ ! -e $logDir ];then
- mkdir -p $logDir
- chmod 777 $logDir
- fi
- logDateDir=$logDir/$dateDir
- if [ ! -e $logDateDir ];then
- mkdir -p $logDateDir
- chmod -R 777 $logDir 2>/dev/null
- fi
- accountLogDir=$logDateDir/${user:=`hostname`}
- if [ ! -e $accountLogDir ];then
- mkdir -p $accountLogDir
- #chmod 777 $accountLogDir
- fi
- accountLogName=${user:=`hostname`}.his
- accountLog=$accountLogDir/$accountLogName
- if [ ! -e "$accountLog" ];then
- touch $accountLog
- #chmod 777 $accountLog
- fi
- echo "$realUserInfor $dateStamp =>$curHistory" >>$accountLog
- }
- export PROMPT_COMMAND=historyLog
- [root@localhost ~]# chmod +x /etc/profile.d/accountlog.sh
- 三、以后每个用户登录的操作都会在/data/accountlog记录
- [root@localhost data]# cd accountlog/
- [root@localhost accountlog]# ls
- 2012
- [root@localhost accountlog]# cd 2012/
- [root@localhost 2012]# ls
- 01 02 03 04 05 06 07
- [root@localhost 2012]# cd 07/
- [root@localhost 07]# ls
- 09 10 12 13 14 15 16 19 20 21
- [root@localhost 07]# cd 21
- [root@localhost 21]# ls
- root
转载于:https://blog.51cto.com/xlogin/1022159