禁用隐藏 Bash 命令历史记录的功能

禁用隐藏 Bash 命令历史记录的功能

用户可以通过以下方式隐藏 Bash 中的命令历史记录

  1. 在命令前添加一个空格
  2. 取消设置 HISTFILE

我怎样才能禁用此功能?

答案1

您可以做几件事,但最终对于足够老练的用户来说,这些事情很容易被绕过。

您可以将相关历史控制变量(HISTFILE、HISTFILESIZE、HISTSIZE、HISTCONTROL、HISTIGNORE)设置为所需的值,并将其设为只读。在用户无法编辑的方便的系统范围初始化文件中执行此操作。例如,您可以设置

readonly HISTFILE=~/.bash_history
readonly unset HISTCONTROL 

或者

readonly HISTCONTROL=ignoredupes

但这并不能阻止用户编辑 $HISTFILE 并从中删除命令或删除文件然后将其链接到 /dev/null 以便再次隐藏命令。

您可以通过使 $HISTFILE 仅附加以下内容来解决这个问题聊天室

chattr +a /home/alice/.bash_history

现在 .bash_history 无法更改,只能添加(别忘了进行某种修剪)。我们可以看到用户所做的一切... 不,

用户很容易绕过这些限制

  • 他们可以运行另一个 shell(有多个可用 shell)。当然,您可以阻止他们执行这些 shell,但这也可能导致其他地方出现意外问题。
  • 他们可以bash --norc --noprofile绕过所有初始化脚本运行,然后可以轻松获取包含所需设置/初始化的脚本。您将能够看到他们这样做了,但看不到他们随后做了什么。

如果你想以一种用户无法规避的方式记录用户的活动,那么您需要使用审计不是历史。

相关内容