shell-history

Posted on Posted in bash
Tips: 本文创建于2014年9月29日,已超过 2 年,内容或图片可能已经失效!

1、让history自动记录所有shell命令的执行时间

  1. root@localhost:~$ vim /etc/bashrc #(debian系列 /etc/bash.bashrc)  
  2. HISTFILESIZE=4000 #定义了在.bash_history文件中保存命令的记录总数,默认值是1000,这里设置为4000  
  3. HISTSIZE=4000 #定义了history命令输出的记录总数  
  4. HISTTIMEFORMAT='%F %T ' #(最后有一个空格)定义时间显示格式,这里的格式与date命令后的"+"%F %T""是一致的  
  5. export HISTTIMEFORMAT #HISTTIMEFORMAT作为history的时间变量将值传递给history命令  
  6. root@localhost:~$ source /etc/bashrc  

2、实现详细记录登录过系统的用户、IP地址、shell命令以及详细操作时间等,并将这些信息以文件的形式保存在一个安全的地方,以供系统审计和故障排查。写到/etc/profile里

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

这段代码将每个用户的shell命令执行历史以文件的形式保存在/usr/share/.history目录中,每个用户一个文件夹,并且文件夹下的每个文件以IP地址加shell命令操作时间的格式命名。
3、清除登陆系统成功的记录,也就是last命令看到的记录

  1. root@localhost:~$ echo > /var/log/wtmp      #此文件默认打开时乱码的,里面可以看到ip等等信息  
  2. root@localhost:~$ echo >/var/log/wtmp  
  3. root@localhost:~$ last                      #此时即看不到用户登录信息  

4、清除登陆系统失败的记录,也就是lastb命令看到的记录

  1. root@localhost:~$ echo > /var/log/btmp  #此文件默认打开时乱码的  
  2. root@localhost:~$ echo > /var/log/btmp  
  3. root@localhost:~$ lastb                 #此时就没有结果输出了  

5、清除历史执行命令

  1. root@localhost:~$ history -c  
  2. #或者,清空用户目录下的这个文件即可  
  3. root@localhost:~$ echo > ./.bash_history  
» 转载请注明来源:若我若鱼 » shell-history

Leave a Reply

Your email address will not be published. Required fields are marked *

14 + 18 =