【问题标题】:Delete BASH history on exit for all users删除所有用户退出时的 BASH 历史记录
【发布时间】:2013-10-15 21:56:55
【问题描述】:

使用 Red Hat Enterprise Linux 是否可以放置一个全局选项,即每当用户退出 SSH 连接时,该用户的 BASH 历史记录都会被清除?

【问题讨论】:

  • 如果用户自定义了他们的 bash 会话以将他们的历史记录保存在任意文件中,那么您无能为力。
  • 按照我在回答中的建议尝试设置/etc/bash.bash_logout
  • 以下建议的答案均无效。

标签: bash rhel


【解决方案1】:

我知道你可以手动运行

history -c

我认为您可以将其放入您的~/.bash_logout

【讨论】:

    【解决方案2】:

    您可以在/etc/bash.bash_logout 脚本中输入:

    unset HISTFILE
    

    HISTFILE 的默认值为 ~/.bash_history。用户可以将其设置为任何他们想要的。如果未设置,则注销过程不会将 RAM 中的历史信息写入历史文件。

    【讨论】:

    • 这只会清除内存中的历史记录,在 shell 退出后它不会持续存在。
    • 看我的回答。不能保证.bash_history 用于存储历史记录。
    • bash 默认情况下没有全局注销文件,尽管看起来您可以在编译时启用它。我不知道这是在~/.bash_logout 之前还是之后执行的。
    • @chepner 我有一个相当“默认”的 Fedora 18 安装,/etc/bash.bash_logout 在我的系统上运行。系统不是我自己编译的。
    • 看起来它在我的 Mac OS X 机器上安装的 bashs 中被禁用,但在我的一个 Linux 机器上启用。它还显示(您可能已经确认)它来自用户的注销文件。
    【解决方案3】:

    用户始终可以将他们的历史记录保存到非标准文件并在下次登录时重新加载,因此从全局角度来看,您无法阻止它。

    例如,Bob 可能会在他的~/.bash_login 中添加以下内容:

    HISTFILE=~/my_secret_history_file
    

    【讨论】:

    • 是否可以在全局范围内将历史记录设置为/dev/null 或其他内容?
    • 否,因为用户配置文件来源于全局配置文件。您能做的最好的事情就是设置一个不能存储历史记录的策略,但是没有技术方法可以强制执行这样的策略。
    【解决方案4】:

    将以下内容放入~/.bash_logout

    echo > $HISTFILE
    

    这将在用户注销时清除保存的历史记录,但在用户登录时会保留有用的运行历史记录。

    【讨论】:

      【解决方案5】:

      当需要让历史记录为空时 - 我使用符号链接它们到 /dev/null...

      lrwxrwxrwx  1 root root    9 Dez 16 19:10 .ash_history -> /dev/null
      lrwxrwxrwx  1 root root    9 Dez 16 19:10 .bash_history -> /dev/null
      

      ...那么键入命令的历史记录仅适用于当前会话。
      启动一个新的 shell,启动一个新的空临时历史记录。
      为普通用户将它们符号链接到 /dev/null 必须由以下人员完成:root

      【讨论】:

        猜你喜欢
        • 2016-02-24
        • 2020-03-22
        • 2016-10-05
        • 1970-01-01
        • 2013-02-13
        • 1970-01-01
        • 2011-02-10
        • 1970-01-01
        • 2014-07-07
        相关资源
        最近更新 更多