【概述】:多人共同使用的伺服器權限确實不好管理,誤操作等造成故障,無法追究,最好的辦法就是将使用者操作實時記錄到日志,并推送到遠端日志伺服器上。包括(使用者登陸時間,目錄,操作指令及時間戳等)。以便事後追查。
測試了網上的多種方法,但均含有不同程度bug,或者不能滿足需求。對于安裝修改bash4.1的方法,暫未測試。力求在盡可能少的改動伺服器的原則上,尋求解決方案。測試過至少4這種方法。當然本文此法也不是最好的,簡單單是不隐蔽。在此感謝,itnihao,hxl2009等童鞋的共同測試與讨論。其中測試過的2種方法有:
http://blog.rootshell.be/2009/02/28/bash-history-to-syslog/
http://jablonskis.org/2011/howto-log-bash-history-to-syslog/
【先睹為快】

【環境】Centos 5.8 ,2台。
日志伺服器IP:192.168.217.129
客戶機IP:192.168.217.130
【伺服器端logserver配置】
- # echo "*.info /var/log/client" >> /etc/syslog.conf #配置日志儲存檔案,把該檔案第一行的*.info 提出來。單獨放一行。
- # service syslog restart #重新開機服務
- #vim /etc/sysconfig/syslog #接收遠端日志寫入
- SYSLOGD_OPTIONS="-m 1 -r" # -m是時間,分鐘,-r表示接收遠端日志寫入
【用戶端client配置】
1、客戶機[client],/etc/bashrc嗎,末行中添加指令行。将使用者操作記錄到日志檔案。也可以添加到/etc/profile,但是有時候不生效,重新登入必須手動source。
- #vim /etc/bashrc
- export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y; });logger "[euid=$(whoami)]":$(who am i):[`pwd`]"$msg"; }'
- # source /etc/bashrc
2、客戶機修改日志伺服器。
- # echo "192.168.217.129 logserver" >> /etc/hosts #日志伺服器位址
- # echo "*.info @logserver" >> /etc/syslog.conf #将info日志推送到日志伺服器,把該檔案第一行的*.info 提出來。單獨放一行。
- # service syslog restart #重新開機syslog
【測試】在客戶機輸入指令,在日志伺服器上檢視(注意防火牆,syslog詳細配置門請自行查詢資料)。