我们正处于基础设施标准化的早期阶段。作为一项紧急措施,我们希望限制用户操纵历史记录。我们为此设置了一些限制。但最近发现有几个漏洞。
- 用户只需运行“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 的更优雅的方法。希望这能给您一些启发。