我无意中在 bash 命令行中输入了密码

我无意中在 bash 命令行中输入了密码

我无意中将密码输入到 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
$ 

相关内容