说明:有时我们发布某套系统,登录服务器后,可能不太记得发布细节了,这时就可以使用 history 命令,查看历史命令回忆一下。但不知道大家有没有想过,如果不小心把数据库或者服务器密码敲出来了(如下),那么不是密码泄露了吗?
本文介绍 history 命令的高级使用
history命令与历史命令文件
首先,敲下面这个命令,查看一下使用手册
help history
如下,可以选择以下参数:
这里需要额外提一下,历史命令,不光可以能通过 history 展示出来,系统用户的家目录下的 .bash_history 文件,可以记录当前用户的历史命令,如下:
cd ~
ls -latrhF
如下,
la (取自 ls all;中文拼音,拉)是博主自定义的命令,别瞎敲,相等于 ls -latrhF ,博主alias了下,方便,参考下面这篇博客设置:
其中 ls 命令介绍,参考下面这篇博客:
查看 .bash_history 文件,如下,记录的也是历史命令
history命令可以配合此文件使用
history命令使用
history可配合的参数如下:
-
-c:清除所有历史命令;
-
-d 序号:删除指定序号的历史命令;
-
-a:将历史命令追加到 .bash_history 文件中;
-
-r:.bash_history 文件内容追加到 history 中;
-
-w:清空 .bash_history 文件内容,并将 history 内容全部写入到文件中;
回到最开头提到的问题,history查看的历史命令中,可以出现敏感数据,可通过 history -d 序号 删除包含敏感数据的命令,如下:
删除后,如下:
但问题又来了,删除历史命令的命令,history -d 19 被记录下来了,会被人知道有人删除了某条命令,此地无银三百两,这不就被人知道那条命令包含了敏感信息嘛?
这时,就可以用 history -c 命令,清空历史记录,如下:
无痕删除历史命令
但这样,通过方向键上下回显命令也不行了。这时,可以考虑配合 .bash_history 文件做到无痕删除某条历史命令,操作如下:
第一步:使用 history -w,将历史命令全量写入到 .bash_history 文件中:
第二步:使用vim编辑器,手动删除想要删除的历史命令;
第三步:使用 history -c 清空命令行中的历史命令;
第四步:使用 history -r 加载 .bash_history 文件中的命令到命令行;
如下:
总结
本文介绍了Linux中history命令,经上可知,history 敲出来的历史命令不是铁定的,可能是经人删除,甚至伪造的。