Bash

history 命令產生星號 * 條目

  • October 20, 2020

我修改後的搜尋歷史行旁邊有一個星號。

我搜尋了 unix.stackexchange.com 和 stackoverflow.com,但我渴望對我的歷史中的星號進行完整的解釋(除了手冊頁上的內容)。

標有 * 的行已被修改。

例子:

$ history | tail
11850*
11851  ./block_ip.sh '23.228.114.203' 'evil probe'
11852  ./block_ip.sh DROP '23.228.114.203' 'evil probe
$

在這個例子中,一個 shell 腳本有第三個參數,但沒有錯誤,我在沒有指定 (DROP/ACCEPT) 的情況下執行了它兩次。

修改是為了清除這段歷史,以便歷史擴展不會導致我(再次)輸入錯誤的命令。

我想知道更多關於這個(但我不知道我不知道什麼)。

請考慮這兩個角度:

  • 我該如何使用它(例如,如果我需要它,我可以得到那個原始命令)?
  • 一個壞人怎麼能使用它(有人可以這樣隱藏他們的命令歷史)?

如果通用答案過於冗長,請注意我的一些設置:

EDITOR=/usr/bin/vim
HISTFILE=/home/jim/.bash_history
SHELLOPTS=braceexpand:hashall:histexpand:history:interactive-comments:monitor:vi

而這個作業系統資訊(它是 RedHat ……但 Debian/Fedora/Ubuntu 不應該有太大差異……他們應該嗎?):

Linux qwerutyhgfjkd 3.10.0-693.11.1.el7.x86_64 #1 SMP Mon Dec 4 23:52:40 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

我使用 bash 作為我的外殼。

這個類似的問題有兩個相關的答案。

具體來說:

如 Bash 手冊中所述,以 a 為前綴的歷史記錄行*已被修改。當您導航到一個命令(例如,使用Up鍵)、編輯它然後離開它而不點擊 時,就會發生這種情況Enter。…順便說一句,您可以通過導航到它們並反复按 Ctrl + _ 將修改後的命令恢復為未編輯狀態。

Eugene Yarmash 在這裡回答

這個答案顯示瞭如何通過禁用它來禁用它mark-modified-lines

set mark-modified-lines Off

至於您關於是否有人可以以這種方式隱藏其命令歷史記錄的問題,您可以看到可以設置mark-modified-lines以及恢復到原始命令行。因此既可以隱藏或更改歷史記錄,也可以恢復它。話雖如此,使用者隱藏其歷史記錄的威脅模型是什麼?使用者是誰?在受管理的環境中,使用者應該只對與其角色相關的功能和文件具有訪問權和權限。否則,如果未經授權的使用者獲得了訪問權限,那麼查找修改過的命令行可能是管理員最不擔心的事情。

引用自:https://unix.stackexchange.com/questions/448275