centos配置history記錄每個用戶執行過的命令

對於系統管理員而言,history是一個很重要的命令,它能顯示出之前在shell中執行過的命令,如果服務器發生異常,可以從這些命令中分析造成問題的原因。但是history顯示的信息有侷限性,默認保存最近的1000條命令,從歷史信息中只能看到某個命令的執行有可能導致系統出了問題,對於進一步的追蹤問題卻無濟於事。若能定位到是哪個用戶在哪個時間在哪執行的命令,那將是多麼愉快的一件事情!說了這麼多,進入正題,centos中具體配置如下:

在/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  


這段腳本的作用是把每個用戶執行的命令記錄在/usr/share/.history下以用戶名命名的目錄下,歷史記錄文件名根據用戶ip和時間命名。打開/usr/share/.history目錄會發現裏邊保存了之前記錄的歷史命令文件




在/etc/bashrc中加入幾個環境變量,用於history命令顯示用戶ip等內容

  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,用戶名等信息。


轉載於:http://blog.csdn.net/a806267365/article/details/40581159

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章