-6

我最近遇到了 shellshock 错误,这是 bash shell 中的错误。它以某种方式使用该env命令创建包含函数的环境变量。

$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

这些函数会在生成新的 bash shell 时运行。我在很多地方阅读并得到了与我刚刚写的相同的解释。但我仍然无法弄清楚上述命令及其参数的工作原理。谁能解释一下?

4

1 回答 1

1

env设置一个或多个环境变量,然后将剩余的参数作为命令运行。

它与以下语法没有显着不同:

x='() { :;}; echo vulnerable' bash -c "echo this is a test"

可以做的一件事env(尽管在上面的示例中没有使用该功能)是创建一个干净的环境;如果第一个选项 toenv是单个-(或-i),则在执行显式分配和运行命令之前清理环境。

于 2014-09-25T19:46:15.740 回答