[20121121]关于linux下history命令.txt
昨天跟别人聊天,提到linux下history命令带来的安全隐患,主要是一些命令会记录在~/.bash_history中。实际上有许多方法可以使系统不记录这样一些命令,自己也看了一些文档,总结如下:
1.使用环境变量HISTCONTROL。
export HISTCONTROL=ignorespace
如果设置HISTCONTROL=ignorespace,这样开头有空格的命令就不会记录。例子:
export HISTCONTROL=ignorespace
ls -l
sqlplus scott/tiger
history | tail -4
1014 2012-11-21 10:12:31 = export HISTCONTROL=ignorespace
1015 2012-11-21 10:12:35 = ls -l
1016 2012-11-21 10:12:53 = history | tail -4
--可以发现sqlplus的命令就没有记录在里面。
2.以上情况下要主要要求管理员在输入口令时有意识的规避,前面加空格,或者在命令行不输入口令。不注意还是会记录在历史文件中的。还可以使用HISTIGNORE参数,这样可以限制一些命令不出现在历史记录中。
export HISTIGNORE="sqlplus*:impdp*:expdp*:imp*:exp*:rlwrap*:*system*"
注意一定要使用*号,而且和上面的HISTCONTROL=ignorespace配合起来,就可以达到比较好的安全目的。例子:
export HISTIGNORE="sqlplus*:impdp*:expdp*:imp*:exp*:rlwrap*:*system*"
export HISTCONTROL=
w
sqlplus scott/tiger
sqlplus system/xxxx
history | tail
1001 2012-11-21 10:35:48 = export HISTIGNORE="sqlplus*:impdp*:expdp*:imp*:exp*:rlwrap*:*system*"
1002 2012-11-21 10:35:50 = w
1003 2012-11-21 10:36:02 = sqlplus scott/tiger
1004 2012-11-21 10:36:05 = history | tail
--可以发现取消HISTCONTROL设置,带空格的sqlplus命令记录在历史中,而sqlplus system/xxxx因为包括在*system*中不记录。
--所以要建立更加严格的安全机制,最好设置如下:
export HISTIGNORE="*sqlplus*:*imp*:*exp*:*rlwrap*:*system*"
export HISTCONTROL=ignorespace
3.另外history其他参数中设置,我个人觉得设置如下:(效果如上)
export HISTTIMEFORMAT='%F %T = '