如何通过列入黑名单/白名单来清理shell脚本中的输入命令?

时间:2015-06-03 15:28:46

标签: bash shell

我正在研究一个非常扩展的源代码。我在不同的路径中添加了许多新的源文件,并编写了一个shell脚本来在文本编辑器中打开我的所有文件。

我从用户那里得到一个输入,用他最喜欢的代码编辑器(gedit,geany,sublime,...)打开文件。为了防御性编程,我想过滤一些像rm这样的命令,这些命令可以删除我的所有文件而不是打开它们!

我的问题是实现这一目标的最佳方法是什么?如果我想将一组命令列入黑名单或列入白名单,是否需要将输入命令与黑名单/白名单中的所有命令进行比较?有没有更短的方式?

1 个答案:

答案 0 :(得分:2)

如果您希望用户能够编辑文件但不能在其上运行其他任意命令,请执行以下所有操作:

  • 将文件存储在用户无法直接访问的用户帐户下。
  • 配置/etc/sudoers以允许该用户仅将特定列入白名单的命令作为能够读取该文件的帐户运行。
  • 仅支持具有受限模式的编辑器。例如,默认情况下,vim可用于运行任意命令,但它具有(受限制的)rvim替代方案,但不允许权限提升。

或做一些理智的事情,并使用版本控制。 :)