linux 記錄用戶操做

上面腳本在系統的/var/log/.history下新建個history目錄,記錄全部登錄過系統的用戶和IP地址(文件名),每當用戶登陸/退出會建立相應的文件,該文件保存這段用戶登陸時期內操做歷史,能夠用這個node

vim /etc/profile.d/history.sh
USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`
HISTDIR=/var/log/.history
DT=`date +%Y%m%d`
LogTime=`date +%Y%m%d_%H%M%S`
if [ -z $USER_IP ]
then
  USER_IP=`hostname`
fi
if [ ! -d $HISTDIR ]
then
  mkdir -p $HISTDIR
  chmod 777 $HISTDIR
fi
if [ ! -d $HISTDIR/${LOGNAME}/${DT}/ ]
then
  mkdir -p $HISTDIR/${LOGNAME}/${DT}/
  chmod 300 $HISTDIR/${LOGNAME}
fi

if [ ! -f $HISTDIR/${LOGNAME}/${DT}/$USER_IP ]
then
  touch $HISTDIR/${LOGNAME}/${DT}/$USER_IP
  chmod 600 $HISTDIR/${LOGNAME}/${DT}/$USER_IP
fi

export HISTSIZE=4000
export HISTTIMEFORMAT="%T "
export HISTORY_FILE="$HISTDIR/${LOGNAME}/$DT/${USER_IP}"
export PROMPT_COMMAND='{ thisHistID=`history 1|awk "{print \\$1}"`;lastCommand=`history 1| awk "{\\$1=\"\" ;print}"`;logTime=${whoStr[4]};if [ ${thisHistID}x != ${lastHistID}x ];then echo
 -E  $lastCommand ;lastHistID=$thisHistID;fi; } >> $HISTORY_FILE'
export HISTFILE="$HISTDIR/${LOGNAME}/$DT/${USER_IP}.${LogTime}"


還有一種方案:這個方案會在每一個用戶退出登陸 時把用戶所執行的每個命令都發送給日誌守護進程rsyslogd,你也可經過配置「/etc/rsyslog.conf」進一步將日誌發送給日誌服務器:shell

操做以下:
把下面內容添加到/etc/profile文件底部
[root@elk-node1 ~]# vim /etc/profile.d/.history
........
  
#設置history格式
export HISTTIMEFORMAT="[%Y-%m-%d %H:%M:%S] [`who am i 2>/dev/null| \
awk '{print $NF}'|sed -e 's/[()]//g'`] "
  
#登陸時清空當前緩存
echo "" > .bash_history
  
#記錄shell執行的每一條命令
export PROMPT_COMMAND='\
if [ -z "$OLD_PWD" ];then
export OLD_PWD=$PWD;
fi;
if [ ! -z "$LAST_CMD" ] && [ "$(history 1)" != "$LAST_CMD" ]; then
logger -t `whoami`_shell_cmd "[$OLD_PWD]$(history 1)";
fi ;
export LAST_CMD="$(history 1)";
export OLD_PWD=$PWD;'
相關文章
相關標籤/搜索