對後面的(1)方法的提取文件改寫法(強烈推薦)html
記錄存儲位置:web
mkdir -p /usr/local/recordsvim
chmod 777 /usr/local/records/
chmod +t /usr/local/records/bash
腳本存儲位置:ssh
mkdir -p /usr/local/system_script測試
編寫腳本(記錄用戶執行過的命令):
vim /usr/local/system_script/bash_record.sh.net
# record cmd history if [ ! -d /usr/local/records/${LOGNAME} ] then mkdir -p /usr/local/records/${LOGNAME} chmod 300 /usr/local/records/${LOGNAME} fi export HISTORY_FILE_DATE_NAME=`date "+%Y-%m-%d"` export HISTORY_FILE="/usr/local/records/${LOGNAME}/bash_history_${HISTORY_FILE_DATE_NAME}" 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'
使腳本可執行
chmod +x /usr/local/system_script/bash_record.sh日誌
/etc/profile末尾追加內容:htm
vim /etc/profileblog
# myscript # record cmd history alias su='su -l ' HISTTIMEFORMAT="%F %T " source /usr/local/system_script/bash_record.sh
說明:
定義su別名,是爲了實現切換用戶時,強制更新環境變量,避免環境變量未發生改變而引發的,切爲低權限用戶後,無寫文件權限記錄history日誌。
定義HISTTIMEFORMAT格式,是爲了寫入history日誌時,有命令執行時的時間。將 HISTTIMEFORMAT 變量加入 /etc/profile 文件中,讓它對全部用戶永久生效。
使配置生效
source /etc/profile
注意:上述腳本只能記錄經過sshd服務端口(一般爲22) 鏈接進入主機的用戶操做,不能記錄經過其餘服務(如webmin)端口接入主機的用戶操做。
一些說明:
記錄腳本
cd /usr/local/
mkdir records
chmod 777 records/
chmod +t records/
vim /etc/profile
說明:
o+t
https://www.iteye.com/blog/cocos-1089890
https://blog.51cto.com/13868278/2149028
(1)腳本一:推薦(按日期分割記錄文件)
# record cmd history if [ ! -d /usr/local/records/${LOGNAME} ] then mkdir -p /usr/local/records/${LOGNAME} chmod 300 /usr/local/records/${LOGNAME} fi export HISTORY_FILE_DATE_NAME=`date "+%Y-%m-%d"` export HISTORY_FILE="/usr/local/records/${LOGNAME}/bash_history_${HISTORY_FILE_DATE_NAME}" #export HISTORY_FILE="/usr/local/records/${LOGNAME}/bash_history" 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'
添加history中每一個命令的執行時間:export HISTTIMEFORMAT='%F %T '
https://zhidao.baidu.com/question/1516093640707389740.html
(2)腳本二:(測試用,不推薦,日誌會不斷累積)
if [ ! -d /usr/local/records/${LOGNAME} ] then mkdir -p /usr/local/records/${LOGNAME} chmod 300 /usr/local/records/${LOGNAME} fi export HISTORY_FILE="/usr/local/records/${LOGNAME}/bash_history" 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'
source /etc/profile