禁用隐藏bash命令历史logging的function

用户可以在bash中隐藏命令历史logging

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

如何禁用这个?

有几件事情,你可以做,但最终对于一个足够复杂的用户,他们可以很容易地被绕过。

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

readonly HISTFILE=~/.bash_history readonly unset HISTCONTROL 

要么

 readonly HISTCONTROL=ignoredupes 

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

你可以通过使$ HISTFILE追加到chattr来解决这个问题

 chattr +a /home/alice/.bash_history 

现在.bash_history不能改变,只能添加到(不要忘记修剪某种forms)。 我们可以看到用户所做的一切…不,

用户很容易绕过这些限制

  • 他们可以运行另一个shell(有几个可用)。 当然,你可以阻止他们执行这些,但这可能会导致其他地方出现意外的问题。
  • 他们可以运行bash --norc --noprofile ,绕过所有的初始化脚本,然后他们可以轻松地获取包含他们想要的设置/初始化的脚本。 你可以看到他们做了这个,但不是他们后来做的。

如果您希望能够以无法规避的方式logging用户活动,那么您需要使用审计而不是历史logging。