我无意中将密码输入到 bash 命令行中,误认为Last login: ...
是Wrong password
(我当时太着急了)。我该怎么做才能掩盖我的踪迹?
我所做的是编辑.bash_history
和删除有问题的行(必须重新登录一次才能看到密码出现在文件中,这样我就可以删除它,然后再次重新登录才能看到它从上箭头键下的历史记录中消失)。
还有其他地方可以保存命令历史记录吗?系统是CentOS 6.5。
答案1
您可以仅从bash
的历史记录中删除有问题的行,而不必清除整个历史记录。只需删除带有 标志的行-d
,然后保存(写入)带有 标志的新历史记录-w
:
$ history
351 ssh [email protected]
352 my_password
$ history -d 352
$ history -w
答案2
这包括两个部分:
bash
将历史记录存储在文件中~/.bash_history
,默认情况下,在会话结束时写入- 保存
history
在记忆中
为了安全起见,您需要从会话中清除它:
history -c
并根据需要截断历史文件:
> ~/.bash_history
如果你输入密码的会话仍然打开,那么另一种方法是掩盖你的踪迹是将变量设置为空设备,以便会话退出时HISTFILE
不会写入历史记录:~/.bash_history
export HISTFILE=/dev/null
答案3
由于 bash(至少我所知道的所有历史版本和当前版本)在您退出之前不会自动保存历史记录,因此当您键入要确保永远不会保存的命令时,通常适用的策略是立即键入:
kill -9 $$
这将使用 终止 shell SIGKILL
,该操作无法被捕获,因此 shell 无法在退出时保存任何内容。
大多数其他方法涉及事后清理(即在数据已经到达磁盘之后),这更容易出错(缺少副本),特别是当系统可能使用 btrfs 或类似系统时。
答案4
我最喜欢的技巧是按向上箭头,在命令上退格,输入一些内容(可能没有必要),按向下箭头,输入“ls”,然后按回车键。感觉很俗气,但实际上有效。当我在历史记录中编辑了错误的命令后,我感到很恼火,然后因为没有按 ctrl-c 中止编辑而毁了它,我发现了这一点。我猜 bash 支持修正主义历史。;-)
$ passw0rd
$ <up arrow><backspace x8>cd<down arrow>echo hi
$ history|tail -3
好像:
$ passw0rd
passw0rd: command not found
$ echo hi
hi
$ history|tail -3
2445* cd
2446 echo hi
2447 history|tail -3
$