預設 history 僅顯示指令序號與內容,若需審計或追蹤操作,可透過環境變數 HISTTIMEFORMAT 加入時間戳、用戶名稱甚至來源 IP,並可將記錄自動寫入日誌檔。

echo 'export HISTTIMEFORMAT="%F %T `whoami` "' >> /etc/profile
source /etc/profile
執行 history 即可看到類似 1852 2016-01-11 16:24:52 user ls 的輸出。
USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`
export HISTTIMEFORMAT="[%F %T][`whoami`][${USER_IP}] "
source /etc/profile
輸出範例:[2016-01-11 16:47:37][hadoop][host-e-150.ustcsz.edu.cn] cd ..
LOGIP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`
LOG_DIR=/var/log/history
[ -z "$LOGIP" ] && LOGIP=`hostname`
[ ! -d "$LOG_DIR" ] && mkdir -p "$LOG_DIR" && chmod 777 "$LOG_DIR"
[ ! -d "$LOG_DIR/${LOGNAME}" ] && mkdir -p "$LOG_DIR/${LOGNAME}" && chmod 777 "$LOG_DIR/${LOGNAME}"
export HISTSIZE=4096
LOGTM=`date +"%Y%m%d_%H%M%S"`
export HISTFILE="$LOG_DIR/${LOGNAME}/${LOGIP}-$LOGTM"
chmod 777 "$LOG_DIR/${LOGNAME}"/*-* 2>/dev/null
將上述內容加入 /etc/profile 或用戶 ~/.bashrc 並 source 生效,即可建立完整的操作審計軌跡。
Linux 查看群組是否包含指定用戶:grep /etc/group 快速檢查法
SecureCRT 連線 Linux 顯示亂碼的根因分析與三步修復法
Linux/Ubuntu 11.10 手把手打造 Android 4.0.3 開發環境
Linux 系統監控:查找佔用記憶體的進程與執行緒完整指令集
Ubuntu 視窗按鈕位置調整:將關閉/最大化/最小化移至右上角符合 Windows 慣性
Linux 安裝配置 Vim IDE 完整指南:Vundle 外掛管理、基礎設定 (配色/縮排/自動儲存/括號匹配/摺疊/系統剪貼簿)、常用外掛推薦