限制用户运行“history -d [arg]”和“set +o history”命令

限制用户运行“history -d [arg]”和“set +o history”命令

我们正处于基础设施标准化的早期阶段。作为一项紧急措施,我们希望限制用户操纵历史记录。我们为此设置了一些限制。但最近发现有几个漏洞。

  • 用户只需运行“history -d”即可删除历史记录
  • 'set +o history' 将停止更新历史文件。

我正在寻找方法来限制用户运行此命令。我想不出解决办法。

任何建议都会有帮助。如果有任何不清楚的地方,请告诉我。谢谢。

我们使用的是 CentOS,我们的 shell 是 bash

-拉姆·库马尔

答案1

首先需要为历史记录创建一个别名,然后使用包装器来获取选项。这是一个简单的例子,但可以扩展。为历史命令创建别名(可以放在 bashrc 中)

alias history='/usr/local/bin/myhistory

然后在/usr/local/bin/myhistory(您可以根据需要添加更多案例,并添加 else 子句以转到默认历史记录函数):

if [ $username == 'myuser' ]
then 
while getopts ":d" opt; do
  case ${opt} in
    d )
      echo "Invalid Option:"
      exit 1
      ;;
  esac
done

fi 

您可以研究 rbash 和 lshell —— 它们是限制 shell 的更优雅的方法。希望这能给您一些启发。

相关内容