在linux 系统中,history 命令可以显示执行过的历史命令,历史命令默认保存在文件~/.bash_history中。
如果是数据库服务器,采用的是非交互式的方式连接过数据库,那么history 中就会记录数据库的用户名和密码信息,所以对于数据库服务器,我们一般建议使用交互式登录,单独输入密码。
1 禁止记录历史命令
[root@@www.cndba.cn ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@@www.cndba.cn ~]# uname -r
2.6.32-696.el6.x86_64
[root@@www.cndba.cn ~]#
[root@@www.cndba.cn ~]# echo $HISTSIZE
3000
[root@@www.cndba.cn ~]#
[root@@www.cndba.cn ~]# echo $HISTFILESIZE
3000
[root@@www.cndba.cn ~]#
这2个参数区别:
HISTFILESIZE 定义了在 .bash_history 中保存命令的记录总数,即.bash_history文件中最多只有HISTFILESIZE行;
HISTSIZE 定义了 history 命令输出的记录数,即输出.bash_history文件中的最后HISTSIZE行。
我们可以修改/etc/profile文件中修改2个参数来控制历史命令记录和输出。
[root@@www.cndba.cn ~]# echo "export HISTFILESIZE=0" >> /etc/profile
[root@@www.cndba.cn ~]# cat /etc/profile|grep HISTFILE
export HISTFILESIZE=0
[root@@www.cndba.cn ~]#
[root@@www.cndba.cn ~]# source /etc/profile
[root@@www.cndba.cn ~]# echo $HISTSIZE
3000
[root@@www.cndba.cn ~]# echo $HISTFILESIZE
0
[root@@www.cndba.cn ~]#
禁止记录后也会自动清空~/.bash_history的内容:
[root@@www.cndba.cn ~]# cat ~/.bash_history
[root@@www.cndba.cn ~]#
2 手工清空~/.bash_history
执行如下命令即可:
[root@@www.cndba.cn ~]# history -c
[root@@www.cndba.cn ~]#
3 注意
bash执行命令时不是马上把命令名称写入history文件的,而是存放在内部的buffer中,等bash退出时会一并写入。 所以即使我们之前设置文件记录为0。 当前连接中还是可以执行history命令查看当前连接执行过的命令:
[root@@www.cndba.cn ~]# cat ~/.bash_history
[root@@www.cndba.cn ~]# history
1 2020-03-17 10:25:45 history
2 2020-03-17 10:26:06 cat ~/.bash_history
3 2020-03-17 10:28:21 cat ~/.bash_history
4 2020-03-17 10:28:24 history
[root@@www.cndba.cn ~]#
一旦会话重启,则不会记录到~/.bash_history,就是执行history命令也看不到之前的命令。
版权声明:本文为博主原创文章,未经博主允许不得转载。