-6

最近、bash シェルのバグである shellshock バグに遭遇しました。どういうわけか、envコマンドを使用して、関数を含む環境変数を作成します。

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

これらの関数は、新しい bash シェルが生成されたときに実行されます。私は多くの場所を読んで、今書いたのと同じ説明を得ました. しかし、上記のコマンドとそのパラメーターの動作をまだ理解できません。誰でも説明できますか?

4

1 に答える 1

1

env1 つ以上の環境変数を設定し、残りの引数をコマンドとして実行します。

次の構文と大きな違いはありません。

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

できることの1 つenv(上記の例ではこの機能は使用されていませんが) は、クリーンな環境を作成することです。への最初のオプションenvが単一-(または-i) の場合、環境は明示的な割り当てを行ってコマンドを実行する前にクリーンアップされます。

于 2014-09-25T19:46:15.740 に答える