`history` 命令生成星号 * 条目

`history` 命令生成星号 * 条目

我修改后的搜索历史记录行旁边有一个星号。

我搜索了 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 作为我的 shell。

答案1

这个类似的问题有两个相关的答案。

具体来说:

正如 Bash 手册中所解释的,以 a 为前缀的历史行*已被修改。当您导航到某个命令(例如使用 键Up)、对其进行编辑,然后在不按 的情况下导航离开该命令时,就会发生这种情况Enter。 ...顺便说一句,您可以通过导航到修改后的命令并重复按 Ctrl + _ 将其恢复为未编辑状态。

尤金·亚马什 (Eugene Yarmash) 在此回答

这个答案显示如何通过禁用来禁用它mark-modified-lines

set mark-modified-lines Off

至于您关于某人是否可以通过这种方式隐藏其命令历史记录的问题,您可以看到可以设置mark-modified-lines并恢复到原始命令行。因此,隐藏或更改历史记录以及恢复历史记录都是可能的。话虽如此,用户隐藏其历史记录的威胁模型是什么?用户是谁?在受管理的环境中,用户应该仅具有与其角色相关的功能和文件的访问和权限。否则,如果未经授权的用户获得了访问权限,那么管理员最不需要担心的是查找修改后的命令行。

相关内容