history历史记录相关,如何隐藏 Linux 命令行历史?如何禁止该情况发生?

history知识补充:
环境变量

HISTFILE:保存命令历史的文件名 。默认值是 ~/.bash_history。如果取消定义,在交互式 shell 退出时命令历史将不会保存。

HISTFILESIZE:历史文件中包含的最大行数。当为这个变量赋值时,如果需要的话,历史文件将被截断来容纳不超过这个值的行。默认值是 500。历史文件在交互式 shell 退出时也会被截断到这个值。

HISTIGNORE:HISTIGNORE="ls:ll:pwd:history" 一个冒号分隔的模式列表,用来判断那个命令行应当保存在历史列表中。每个模式都定位于行首,必须匹配整行 (没有假定添加 ‘*’)。在 HISTCONTROL 指定的测试结束后,这里的每个模式都要被测试。除了平常的 shell 模式匹配字符, ‘&’ 匹配上一个历史行。‘&’ 可以使用反斜杠来转义;反斜杠在尝试匹配之前将被删除。多行的组合命令的第二行以及后续行都不会被测试,不管 HISTIGNORE 是什么,都将加入到历史中。

HISTSIZE:命令历史中保存的历史数量 (参见下面的 HISTORY 历史章节)。默认值是 500。

HISTTIMEFORMAT="`hostname` %F  %T  " :配置格式化的时间 命令历史前加入 主机名 、日期、时间等信息
 
HISTCONTROL:如果设置为 ignorespace, 以 space 开头的行将不会插入到历史列表中。如果设置为 ignoredups, 匹配上一次历史记录的行将不会插入。设置为 ignoreboth 会结合这两种选项。如果没有定义,或者设置为其他值,所有解释器读取的行都将存入历史列表,但还要经过 HISTIGNORE 处理。这个变量的作用可以被 HISTIGNORE 替代。多行的组合命令的第二和其余行都不会被检测,不管 HISTCONTROL 是什么,都会加入到历史中。
 
ignoredups:不记录连续重复的命令
ignorespace:不记录空格开头的命令
ignoreboth:不记录连续重复和空格打头的命令
erasedups:重新记录并删除之前完全相同的命令
 
涉及安全性:
一、检查HISTCONTROL变量:
    当HISTCONTROL被设置为ignorespace、ignoreboth时,用户可能利用在命令开头敲空格键的形式,使操作不计入history日志中。
如:(这里[space]表示输入一个空格)
[space]echo "hello world!"

解决方式(使变量无法被修改):

vi /etc/profile

readonly HISTCONTROL=ignoredups

 

二、检查HISTSIZE、HISTFILESIZE变量(对于root管理普通用户的日志记录,只要设置了指定HISTFILE+实时记录日志,可忽略HISTSIZE):

    当HISTSIZE被设置为0时,将没有历史日志被记录。

    解决方式(使变量无法被修改):

vi /etc/profile

readonly HISTSIZE=4000
readonly HISTFILESIZE=4000

 

三、设置指定HISTFILE存放历史记录文件,搭配history -a,实现事实记录日志,避免用户对记录进行编辑、删除等操作。

 

遇到问题:以上均解决,无法解决set -o history的情况。。。。。 

  

 

 

history历史记录相关,如何隐藏 Linux 命令行历史?如何禁止该情况发生?

上一篇:eclipse ------ TODO、FIXME、XXX 等任务标记


下一篇:这10个 Linux 命令,让你的操作更有效率