我修改后的搜索历史记录行旁边有一个星号。
我搜索了 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 + _ 将其恢复为未编辑状态。
这个答案显示如何通过禁用来禁用它mark-modified-lines
:
set mark-modified-lines Off
至于您关于某人是否可以通过这种方式隐藏其命令历史记录的问题,您可以看到可以设置mark-modified-lines
并恢复到原始命令行。因此,隐藏或更改历史记录以及恢复历史记录都是可能的。话虽如此,用户隐藏其历史记录的威胁模型是什么?用户是谁?在受管理的环境中,用户应该仅具有与其角色相关的功能和文件的访问和权限。否则,如果未经授权的用户获得了访问权限,那么管理员最不需要担心的是查找修改后的命令行。