2021-05-12 14:32:11
CentOS設定history記錄每個使用者執行過的命令
對於系統管理員而言,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,使用者名稱等資訊。
本文永久更新連結地址:http://www.linuxidc.com/Linux/2017-01/139284.htm
相關文章