2018年10月17日 星期三

生產環境中Linux系統所使用的history設置



history指令會將用戶所輸入的指令記錄起來,我們可以很方便的利用這個指令來回顧系統的行為,Linux系統本身就預設了500行的儲存紀錄設置,可這對於生產環境中的服務器來說可是遠遠不足。

另外每一個時間點所下的每個指令可能都至關重要,當我們要追查問題的時候,或許還需要從指令執行的時間下手,因此以下將針對服務器進行加註「時間」和擴展「事件數量」儲存的設置。



將history設置參數加入.bashrc
[root@centos7 ~]# nano /root/.bashrc
文件底部新增以下參數後存檔離開
HISTCONTROL=ignoredups
HISTIGNORE="[ ]*:ls:ll:cd:pwd:sync:exit:history*"
HISTTIMEFORMAT='%F %T '
HISTFILESIZE=30000
HISTSIZE=7=10000
  • HISTCONTROL=ignoredups 重複的指令只記錄一次
  • HISTIGNORE 哪些指令會被忽略紀錄,[ ]*指令前面加空白不予紀錄
  • HISTTIMEFORMAT 讓history加註時間
  • HISTFIELSIZE 決定.bash_history檔案可儲存的總行數
  • HISTSIZE 決定當前用戶於console輸入的指令可儲存多少行於記憶體中

立即生效.bashrc
[root@centos7 ~]# source /root/.bashrc
我們會發現一個問題,在多數的history教學中都沒有說清楚HISTSIZE和HISTFILESIZE這兩個參數究竟有何不同,所以大多數人都將這兩個參數設置相同的數字,其實要理解這兩個參數得從原理來解釋,當每一個用戶透過console登入系統後所輸入的指令,都不會直接存入.bash_history這個記錄檔,而是暫存在記憶體中,用戶所輸入的history指令也並不是要列印出.bash_history的資料,而是直接從記憶體中調閱出指令的歷史,HISTSIZE就是在規範有多少指令可以被暫存於記憶體之中,待最後當用戶登出系統後,才會從記憶體寫入.bash_history這個記錄檔,所以我們可以想像有三位User皆透過root帳戶登入系統,每人皆輸入了一萬筆指令,如果此時這三位User依序離開,依照我們的設定這三位User的指令最後都會被記載到.bash_history中,假若HISTFILESIZE設定為20000,那麼最早離開的User所輸入的一萬筆資料將會被覆蓋消失,因為.bash_history最多就只能記錄2萬筆資料!


0 意見: