Linux 歷史記錄配置


一、設置歷史記錄的時間

# vi /etc/profile    //在文件末尾添加以下內容,然后保存退出重新登陸即可 HISTTIMEFORMAT='%F %T ' //注意有個空格,為了顯示時日期與命令之間有空格分割。 HISTSIZE="3000" //默認保留1000條。

 

export HISTTIMEFORMAT='%F %T ' 2015-07-27 10:33:58 echo from1 如果是 export HISTTIMEFORMAT='%F %T' //%T少了個空格,日期與命令就連在一起了 2015-07-27 10:33:58echo from1

 
二、使用 HISTSIZE 控制歷史命令記錄的總行數
將下面兩行內容追加到.bash_profile文件並重新登陸,history命令的記錄數將變成3000條。

# vi ~/.bash_profile HISTSIZE=3000 HISTFILESIZE=3000

HISTFILESIZE 定義了在 .bash_history 中保存命令的記錄總數.
HISTSIZE 定義了 history 命令輸出的記錄數.
如果想禁用history, 可以設置HISTSIZE=0:
修改.bash_profile,只對當前用戶的history有效,如果修改/etc/profile則對所有用戶用效!

三、使用 HISTFILE 更改歷史文件名稱
默認情況下命令歷史存儲在 ~/.bash_history 文件中 。 添加下列內容到 .bash_profile 文件並重新登錄bash shell, 將使用 /var/history/$USER-$UID.log 來存儲命令歷史 :

# vi ~/.bash_profile   //輸入以下內容 HISTFILE=/var/history/$USER-$UID.log

 
四、使用 HISTCONTROL 從命令歷史中剔除連續重復的條目
在下面的例子中 ,pwd命令被連續執行了三次。執行history后你會看到三條重復的條目。要剔除這些重復的條目,你可以將HISTCONTROL設置為ignoredups

# vi ~/.bash_profile HISTCONTROL=ignoredups //保存退出

 
測試,分別連續3次輸入ls、pwd

# ls # ls # ls # pwd # pwd # pwd 

 
可以看到,只有1條ls和pwd命令

# cat .bash_history  #1436160573 ls #1436160575 pwd

 
五、使用HISTCONTROL清除整個命令歷史中的重復條目
上例中的ignoredups只能剔除連續的重復條目。要清除整個命令歷史中的重復條目,可以將HISTCONTROL設置成erasedups

# vi ~/.bash_profile    //將HISTCONTROL修改成erasedups HISTCONTROL=erasedups

 
六、使用 HISTCONTROL 強制 history不記住特定的命令
將 HISTCONTROL 設置為 ignorespace, 並在不想被記住的命令前面輸入一個空格

# vi ~/.bash_profile   //添加以下內容 HISTCONTROL=ignorespace # pwd # service httpd stop //不被history記錄的命令 # history | tail -3 68 pwd 69 history | tail -3

 
七、用戶打開多個終端(產生多個session)情況下,共享history
由於bash的history文件默認是覆蓋,如果存在多個終端,最后退出的會覆蓋以前歷史記錄,改為追加形式

# vi ~/.bash_profile   //添加以下內容 shopt -s histappend

 
八、實時追加history,不必等用戶退出才將內存中的history記錄到文件

# vi ~/.bash_profile   //添加以下內容 PROMPT_COMMAND=”history -a

這里補充下,history -a是追加當前session的歷史命令記錄到history文件,而history -w則是會用當前session的歷史命令替換history文件

實例
設置uid大於等於500的用戶的history安全性
需求:
記錄統一轉移到/var/history目錄下;
用戶無法刪除自己的history文件,無法清空history;
多個終端共享history,實時追加;
限制history文件大小和保存的條數;
舉例用戶,lionel;uid=522

1)配置全局環境變量文件/etc/profile # vi /etc/profile //添加以下內容 # add by coolnull if [ $UID -ge 500 ];then readonly HISTFILE=/var/history/$USER-$UID.log readonly HISTFILESIZE=50000 readonly HISTSIZE=10000 readonly HISTTIMEFORMAT='%F %T ' readonly HISTCONTROL=ignoredups shopt -s histappend readonly PROMPT_COMMAND="history -a" fi 創建目錄結構 # mkdir /var/history 配置目錄權限,使得用戶有權限創建自己的history文件 # chmod 777 /var/history # chmod a+t /var/history 2)限制用戶刪除自己的history文件 # chattr +a /var/history/lionel-522.log 3)限制用戶修改自己主目錄的環境變量配置文件 # chattr +a /home/lionel/.bash* # lsattr /home/lionel/.bash* -----a------- /home/lionel/.bash_logout -----a------- /home/lionel/.bash_profile -----a------- /home/lionel/.bashrc 4)禁止普通用戶切換到系統中其他shell環境(一般包括csh,tcsh,ksh # chmod 750 tcsh(csh是tcsh的軟連接,設置tcsh就可以了) # chmod 750 /bin/ksh 普通帳號測試 [zhangfei@node1 ~]$ tcsh -bash: /bin/tcsh: Permission denied [zhangfei@node1 ~]$ ksh -bash: /bin/ksh: Permission denied


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM