日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

linux的history命令设置

發布時間:2023/12/13 综合教程 30 生活家
生活随笔 收集整理的這篇文章主要介紹了 linux的history命令设置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

history的歷史記錄,同一個用戶的各個會話,讀取到的內容也是不一樣的,原因是它讀取的是shell會話緩存里的內容。只有當用戶退出當前會話的時候,會話里的緩存內容才會寫入~/.bash_history里。
猜測:用戶登錄后,首先把~/.bash_history里的內容讀入緩存,然后當前會話的命令執行記錄,也寫入緩存中,這樣相同用戶不同會話,讀到的history內容是不一樣的。
linux默認配置是當打開一個shell終端后,執行的所有命令均不會寫入到~/.bash_history文件中,只有當前用戶退出后才會寫入,這期間發生的所有命令其它終端是感知不到的。

export HISTTIMEFORMAT="`whoami` : | %F | %T: | "
網管還應該在"/etc/skel/.bash_logout" 文件中添加下面這行"rm -f $HOME/.bash_history" 。這樣,當用戶每次注銷時,“.bash_history”文件都會被刪除.
$HISTSIZE 設置bash會員期間歷史包含的命令數量
$HISTFILESIZE 設置歷史文件中實際存儲的命令數量
$HISTFILE bash啟動的時候會讀取~/.bash_history文件并載入到內存中,這個變量就用于設置.bash_history文件,bash退出時也會把內存中的歷史回寫到.bash_history文件
清空當前會話緩存里歷史命令 history -c 要想徹底清空歷史命令,需要先將 .bash_history的內容刪除,接著使用 history -c, 這樣才會徹底清空命令歷史。

HISTSIZE:shell進程的緩沖區保留的歷史命令的條數;
HISTFILESIZE:命令歷史文件可保存的歷史命令的條數;
HISTIGNORE="str1:str2:…"忽略string1,string2歷史;

history -w 讓bash將歷史命令立即從內存寫到.bash_history文件
history -a 將目前新增的 history 歷史命令寫入.bash_history文件

history 命令常見用法 ?
語法:

history [n | -c | -rnaw histfile]
參數:

n:數字,列出最近的 n 條歷史命令
-c:將當前shell 緩存中的 history 內容全部清除
-a:將當前shell緩存中的history 內容append附加到 histfile 中,如果沒有指定 histfile,則默認寫入 ~/.bash_histroy;-a:將bash 內存中歷史命令追加到 .bash_history 歷史命令文件中, 默認只有退出 shell 是才會保存
-r:將 histfile 中的內容讀取到當前shell的緩存中;-r:讀取歷史文件到歷史列表(將 .bash_history重新讀取一遍,寫入到當前bash進程的內存中)
-w:將當前shell緩存的history歷史列表寫入到指定的文件;-w:保存歷史列表到指定的歷史文件(history -w /PATH/TO/SOMEFILE 將內存中命令執行的歷史列表保存到指定的 /PATH/TO/SOMEFILE中)
-a: 追加本次會話新執行的命令歷史列表至歷史文件,因為多終端所以如果想看當前都發生了什么操作就可以執行-a進行查看
-n: 讀歷史文件(本地數據)中未讀過的行到歷史列表(內存數據)
-r: 讀歷史文件(本地數據)附加到歷史列表(內存數據)
-w: 保存歷史列表(內存數據)到指定的歷史文件(本地數據)
-s: 展開歷史參數成一行,附加在歷史列表后。用于偽造命令歷史

http://blog.51cto.com/skypegnu1/1941153  

  利用history命令,可以使每個登錄會話只看到自己的命令歷史記錄,這樣即保證安全,又方便使用。即使是同一個用戶的不同會話,也要保證同一個用戶的各個會話只能看到自己的歷史記錄。不方便的是,你每次登錄進去,都是一個新的會話,就看不到任何的history記錄。

HISTCONTROL:如果設置為 ignorespace, 以 space 開頭的行將不會插入到歷史列表中。如果設置為 ignoredups, 匹配上一次歷史記錄的行將不會插入。設置為 ignoreboth 會結合這兩種選項。如果沒有定義,或者設置為其他值,所有解釋器讀取的行都將存入歷史列表,但還要經過 HISTIGNORE 處理。這個變量的作用可以被 HISTIGNORE 替代。多行的組合命令的第二和其余行都不會被檢測,不管 HISTCONTROL 是什么,都會加入到歷史中。
HISTFILE:保存命令歷史的文件名 (參見下面的 HISTORY 歷史章節)。默認值是 ~/.bash_history。如果取消定義,在交互式 shell 退出時命令歷史將不會保存。
HISTFILESIZE:歷史文件中包含的最大行數。當為這個變量賦值時,如果需要的話,歷史文件將被截斷來容納不超過這個值的行。默認值是 500。歷史文件在交互式 shell 退出時也會被截斷到這個值。
HISTIGNORE:一個冒號分隔的模式列表,用來判斷那個命令行應當保存在歷史列表中。每個模式都定位于行首,必須匹配整行 (沒有假定添加 ‘*’)。在 HISTCONTROL 指定的測試結束后,這里的每個模式都要被測試。除了平常的 shell 模式匹配字符, ‘&’ 匹配上一個歷史行。‘&’ 可以使用反斜杠來轉義;反斜杠在嘗試匹配之前將被刪除。多行的組合命令的第二行以及后續行都不會被測試,不管 HISTIGNORE 是什么,都將加入到歷史中。
HISTSIZE:命令歷史中保存的歷史數量 (參見下面的 HISTORY 歷史章節)。默認值是 500。

  

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

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

Bash Shell 中的 PROMPT_COMMAND的含義:每天命令執行前,先執行Bash Shell 中的 PROMPT_COMMAND命令。

https://jaminzhang.github.io/shell/PROMPT-COMMAND-in-bash-shell/

http://blog.51cto.com/chenchao40322/411855

參考shell十三問:http://wiki.jikexueyuan.com/project/13-questions-of-shell/double-single.html

參考:

1、https://blog.csdn.net/m0_38020436/article/details/78730631

2、http://xiaqunfeng.cc/2017/01/11/Linux%E5%91%BD%E4%BB%A4%E2%80%94%E2%80%94history%E5%8F%8A%E5%85%B6%E4%BC%98%E5%8C%96/

3、https://askubuntu.com/questions/80371/bash-history-handling-with-multiple-terminals 如何保存多個終端會話的歷史命令

總結

以上是生活随笔為你收集整理的linux的history命令设置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。