zoukankan      html  css  js  c++  java
  • centos配置history记录每个用户执行过的命令

     对于系统管理员而言,history是一个很重要的命令,它能显示出之前在shell中执行过的命令,如果服务器发生异常,可以从这些命令中分析造成问题的原因。但是history显示的信息有局限性,默认保存最近的1000条命令,从历史信息中只能看到某个命令的执行有可能导致系统出了问题,对于进一步的追踪问题却无济于事。若能定位到是哪个用户在哪个时间在哪执行的命令,那将是多么愉快的一件事情!说了这么多,进入正题,centos中具体配置如下:

    在/etc/profile中加入以下脚本

    [plain] view plaincopy
     
    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  

    这段脚本的作用是把每个用户执行的命令记录在/usr/share/.history下以用户名命名的目录下,历史记录文件名根据用户ip和时间命名。打开/usr/share/.history目录会发现里边保存了之前记录的历史命令文件

    在/etc/bashrc中加入几个环境变量,用于history命令显示用户ip等内容

    [plain] view plaincopy
     
    1. #history  
    2. USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`   
    3. HISTFILESIZE=4000  
    4. HISTSIZE=4000  
    5. HISTTIMEFORMAT="%F %T ${USER_IP} `whoami` "  
    6. export HISTTIMEFORMAT  


    在终端中输入 history,显示效果如下:

    显示的结果中多了时间戳,ip,用户名等信息。

  • 相关阅读:
    hdu2846 Repository
    Ajax:js自执行函数、jsonp、cros
    python读写Excel文件--使用xlrd模块读取,xlwt模块写入
    CentOS上快速安装saltstack
    Django_Form表单补充
    前端基础之Bootstrap介绍
    前端基础之jquery练习
    前端基础之Http协议
    Django_随机验证码
    dpkg --add-architecture i386 && apt-get update && > apt-get install wine32
  • 原文地址:https://www.cnblogs.com/itfat/p/7268149.html
Copyright © 2011-2022 走看看