1.在/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
2.在/etc/bashrc中添加如下代碼:
#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
最終效果:
這段腳本的作用是把每個用戶執行的命令記錄在/usr/share/.history下以用戶名命名的目錄下,歷史記錄文件名根據用戶ip和時間命名。打開/usr/share/.history目錄會發現里邊保存了之前記錄的歷史命令文件。
命令是記錄了,但從安全角度講,如果他清楚,所有操作均記錄了的話,是可以進入日志記錄目錄,進行文件刪除或文件修改的,於是需要將這些文件及時傳到日志收集服務器中,最好是作一個后台實時監控進程,該目錄下有文件變化的話,直接觸發同步操作,把文件及時同步到日志收集服務器,網上也有人把所有記錄實時通過日志進程syslog,把日志實時發至日志服務器中。