2017年6月29日

Linux 保存和即時顯示所有使用者的操作記錄及過程

因為某些需求、必須針對權限加強控管

因為記錄下使用者登入後的每個指令就是必須的動作

系統 centos 6.9 x64
在 /etc/profile 最後新增下面三行
export HISTORY_FILE=/var/log/command_history/$USER-$UID-`date '+%Y-%m-%d'`.log
export PROMPT_COMMAND='{ date "+%Y-%m-%d %T ##### $(who am i |awk "{print \$1\" \"\$2\" \"\$5}") #### $(history 1 | { read x cmd; echo "$cmd"; })"; } >> $HISTORY_FILE'

exec /usr/bin/script -t 2>> /var/log/command_history/$USER-$UID-`date +%Y%m%d%H%M`.date -a -f -q /var/log/command_history/$USER-$UID-`date +%Y%m%d%H%M`.log


這樣會記錄下所有使用者登入後操作的每一個命令

記錄檔存放的地方需要有其他使用者可以寫的權限
chmod 743 /var/log/command_history

第一二行:將使用者本機操作指令存到記錄檔中
第三行:利用 script 指令將使用者所有操作存到檔案中,如果用 tail -f 去存取.log檔的話,可以即時看到使用者的行為

另外 script 記錄的檔案會把含控制碼都記錄下來、可以用 less -r file.log 或是 more file.log 去看


reference:
Linux利用script命令儲存使用者操作記錄的方法
用 Script 指令來紀錄輸出及輸入

0 意見:

張貼留言