歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> CentOS配置history記錄每個用戶執行過的命令

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

日期:2017/2/28 13:44:57   编辑:Linux教程

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

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

#history
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
HISTDIR=/usr/share/.history
if [ -z $USER_IP ]
then
USER_IP=`hostname`
fi
if [ ! -d $HISTDIR ]
then
mkdir -p $HISTDIR
chmod 777 $HISTDIR
fi
if [ ! -d $HISTDIR/${LOGNAME} ]
then
mkdir -p $HISTDIR/${LOGNAME}
chmod 300 $HISTDIR/${LOGNAME}
fi
export HISTSIZE=4000
DT=`date +%Y%m%d_%H%M%S`
export HISTFILE="$HISTDIR/${LOGNAME}/${USER_IP}.history.$DT"
export HISTTIMEFORMAT="[%Y.%m.%d %H:%M:%S]"
chmod 600 $HISTDIR/${LOGNAME}/*.history* 2>/dev/null

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

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

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

在終端中輸入 history,顯示效果如下:

顯示的結果中多了時間戳,ip,用戶名等信息。

Copyright © Linux教程網 All Rights Reserved