当我们在终端上执行shell命令时,默认情况下,Linux系统会将我们所运行的shell命令通过history的形式记录在系统中,由此,我们可以使用键盘上的方向键”↑”和”↓”来浏览我们曾执行过的命令,Linux系统的这一特点为我们的交互使用带来了便利。如果我们需要找到之前执行的一个复杂的shell命令,那么我们只需要使用”history | grep XXX”就可以找到了。
        但是,我们也应该注意到,这种便利性也带来了严重的安全隐患。试想我们在维护一台对外提供服务的web服务器,如果某一天我们的web服务器被入侵了,hack可以很容易地通过history命令来获取我们曾在命令行上执行的所有的操作记录,如果这些操作记录中包含其它的重要的系统信息,比如”mysql -hxxx -pxxx -P3306 -uxxx”,那么这就太危险了,
因为hack可以从history命令中获取我们的MySQL用户权限,我们的数据库也随着服务器被入侵而沦陷了。
        实际上,如果我们关闭系统中的”history”,那么即使服务器被入侵了,我们还是可以将损失降低到最少(至少其它的重要信息不会泄漏)。
        这里需要补充一点的就是,尽量不要在外网web服务器上使用root权限进行相关操作,这样会有很大的安全风险。
当然,也不是任何的情况下我们都需要关闭系统中的”history”记录,就如我们上面提到了,”history”记录还是能给我们带来很大的便利的。
一般的原则是:
         如果机器是个人使用的,不与其它人共用,也不会一直进行网络连接,那么可以打开”history”记录。
         如果机器是多人共享,或者是作为web服务器使用,那么一定要关闭”history”记录。

如何关闭系统中的”history”
1. 永久性的关闭”history”记录
         修改/etc/profile将HISTSIZE=1000改成0或1 并清除用户home路径下.bash_history 。
2. 临时性地清除当前所有的”history”记录
         history -c
 注意,使用”history -c”命令只会清除当前的”history”记录,而不会永久关闭”history”记录,下一次使用shell命令时,系统依然会记录”history”。

本站原创文章,转载请注明出处。