Linux系統設置 history 相關係統變量(包括顯示時間、history條數)

Linux系統設置 history 相關係統變量(包括顯示時間、history條數)

摘要

顯示history時間;history條數;指定存儲history文件;控制實時寫入history文件

一、設置歷史記錄的時間

編輯 /etc/profile文件

# vi /etc/profile

在文件末尾添加

export HISTTIMEFORMAT='%F %T '     #注意有個空格,爲了顯示時日期與命令之間有空格分割。

export HISTSIZE="10000"    #默認保留10000條。

保存

重新login即可生效。

二、使用 HISTSIZE 控制歷史命令記錄的總行數

將下面兩行內容追加到 .bash_profile 文件並重新登錄 bash shell, 命令歷史的記錄數將變成 450 條 :

# vi ~/.bash_profileexport HISTSIZE=450export HISTFILESIZE=450

 

如果你想禁用 history, 可以設置 HISTSIZE=0:

三、使用 HISTFILE 更改歷史文件名稱

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

# vi ~/.bash_profileexport HISTFILE=/var/history/$USER-$UID.log

四、使用 HISTCONTROL 從命令歷史中剔除連續重複的條目

在下面的例子中 ,pwd 命令被連續執行了三次 。 執行 history 後你會看到三條重複的條目 。 要剔除這些重複的條目 , 你可以將 HISTCONTROL 設置爲 ignoredups:

# vi ~/.bash_profile

export HISTCONTROL=ignoredups

保存

測試# ls# ls# ls# pwd# pwd# pwd  $ cat .bash_history #1436160573

ls#1436160575

pwd

 

五、使用 HISTCONTROL 清除整個命令歷史中的重複條目

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

# export HISTCONTROL=erasedups

 

六、使用 HISTCONTROL 強制 history 不記住特定的命令

將 HISTCONTROL 設置爲 ignorespace, 並在不想被記住的命令前面輸入一個空格 :

# export HISTCONTROL=ignorespace# pwd#  service httpd stop(不被history記錄的命令)# history | tail -368  pwd69  history | tail -3

七、用戶打開多個終端(產生多個session)情況下,共享history

由於bash的history文件默認是覆蓋,如果存在多個終端,最後退出的會覆蓋以前歷史記錄,改爲追加形式

shopt -s histappend

 

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

PROMPT_COMMAND=”history -a”

==================================

實例,設置uid大於等於500的用戶的history安全性

需求:

· 記錄統一轉移到/var/history目錄下;

· 用戶無法刪除自己的history文件,無法清空history;

· 多個終端共享history,實時追加;

· 限制history文件大小和保存的條數;

舉例用戶,lionel;uid=522

1)配置全局環境變量文件/etc/profile

#vi /etc/profile

……# add by shenxiaoranif [ $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

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章