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

1、設置歷史記錄的時間

編輯 /etc/profile文件 node

# vi /etc/profile shell

在文件末尾添加 安全

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

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

保存 app

從新login便可生效。 測試

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

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

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


若是你想禁用 history, 能夠設置 HISTSIZE=0: spa

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

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

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

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

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

# vi ~/.bash_profile
export HISTCONTROL=ignoredups
保存
測試
# ls
# ls
# ls
# pwd
# pwd
# pwd  $ cat .bash_history 
#1436160573
ls
#1436160575
pwd


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

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

# export HISTCONTROL=erasedups


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

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

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

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

因爲bash的history文件默認是覆蓋,若是存在多個終端,最後退出的會覆蓋之前歷史記錄,改成追加形式

shopt -s histappend


8、實時追加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 shenxiaoran
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

相關文章
相關標籤/搜索