我的 win10 上安装了 Ubuntu 18.04,我通常用这行代码创建密码:
echo -n "<some text generated by hand from the site's domains>" | sha256sum |cut -c-20
但是今天我不小心按了Enter echo 命令之后。
Ubuntu 是否将其终端输出保存在文件中?仅使用clear
命令是否安全?
你们能推荐一个更好的解决方案吗,这样我的密码就彼此不同,并且很难根据我的其他密码计算出一个新密码?
谢谢。
答案1
这输出命令通常是不是存储在任何地方并关闭窗口就足够了。但命令本身被存储在:在 shell 的历史记录中。
要从那里删除它,最好先关闭全部终端窗口。通常,历史记录会在 shell 结束时写入文件~/.bash_history
,直接操作文件不会有帮助,因为它会在 shell 退出时被覆盖。有history
多种配置方法,但最简单的方法是关闭所有终端窗口。
现已开放一新的终端窗口并输入
history
或者
history | grep echo
示例输出:
...
2007 echo -n "<some text generated by hand from the site's domains>" | sha256sum |cut -c-20
2008 echo -n "secret" | sha256sum |cut -c-20
2009 echo -n "secret"
2010 history
这里你可以看到,不仅存储了“恶意”命令,还存储了“正确”命令。你可以使用以下命令删除它:
history -d 2009
其中2009
是第一列的数字。适当更改。现在:
history
...
2007 echo -n "<some text generated by hand from the site's domains>" | sha256sum |cut -c-20
2008 echo -n "secret" | sha256sum |cut -c-20
2009 history
2010 history -d 2009
2011 history
将来你可能想在你的前面加上echo … | sha256sum …
一个空格,即
_echo -n "secret" | sha256sum |cut -c-20 # The '_' indicates a leading space
这样,完整的命令就不会被记录在历史记录中。该行为由 HISTCONTROL 变量控制(man bash
):
组织控制
以冒号分隔的值列表,控制如何将命令保存在历史列表中。如果值列表包括
ignorespace
,则以空格字符开头的行将不会保存在历史列表中。值ignoredups
会导致与上一个历史记录条目匹配的行不被保存。 值ignoreboth
是ignorespace
和的简写ignoredups
。
您可能希望添加export HISTCONTROL='ignoreboth'
您的内容~/.bashrc
来实现这一点。