用途:linux用户操作记录一般通过命令history来查看历史记录,但是如果因为某人误操作了删除了重要的数据,这种情况下history命令就不会有什么作用了。以下方法可以实现通过记录登陆IP地址和所有用户登录所操作的历史命令来记录!

分析:首先要从命令的结果里得到用户名和登录该服务器的客户端ip地址,想想什么命令可以查到当前登录的用户呢。有好多,比如w;who等都可以实现。我们这里使用who,who的参数比较多,而且比较灵活。还涉及的系统自带的PWD和LOGNAME还有HISTORYSIZE等。

方法:在/etc/profile配置文件的末尾加入以下脚本代码就可以实现,因为profile是登录时执行的家环境。

   
   
   
   
  1. PS1="`whoami`@`hostname`:"'[$PWD]' 
  2. history  
  3. USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`  
  4. if [ "$USER_IP" = "" ]  
  5. then 
  6. USER_IP=`hostname`  
  7. fi  
  8. if [ ! -d /tmp/history ]  
  9. then 
  10. mkdir /tmp/history  
  11. chmod 777 /tmp/history  
  12. fi  
  13. if [ ! -d /tmp/history/${LOGNAME} ]  
  14. then 
  15. mkdir /tmp/history/${LOGNAME}  
  16. chmod 300 /tmp/history/${LOGNAME}  
  17. fi  
  18. export HISTSIZE=4096  
  19. DT=`date +"%Y%m%d_%H%M%S"`  
  20. export HISTFILE="/tmp/history/${LOGNAME}/${USER_IP} history.$DT" 
  21. chmod 600 /tmp/history/${LOGNAME}/*history* 2>/dev/null 

用户从客户机登录这台机器的时候都会在/tmp/history/下面建立自己的用户名的目录,目录下面有每次登录这台机器的文件,名字格式为ip地址\history.登录日期_登录时间,如192.168.10.15\ history.20130116_184144。文件里记录着历史命令。