誰かが現在の作業ディレクトリにFoo.shというシェルスクリプトを持っているとしましょう。それは次のように読む
#!/bin/bash
#some scripts below
「./Foo.sh」と入力してスクリプトを実行するには、実行権限が必要です。代わりに、彼は単に「bash Foo.sh」を実行し、そのスクリプトをプログラムbashに引数として渡すことによってスクリプトを実行することを選択できます。後者の場合は、読み取り権限のみが必要です。
これは私に権限の反転のように見えます。つまり、ユーザーは実行権限のない実行可能ファイルを実行できます。
私の質問は次のとおりです
これは、ある程度合法性を持つ意図的なデザインですか、それとも互換性の理由でのみ維持される従来の問題ですか?
これにセキュリティリスクがありますか?
ベストアンサー1
これは便利なデバイスです。 shebangラインはインタプリタをスクリプトにハードコードします。便利なだけでなく、ファイル拡張子と同様に情報も提供します。他のインタプリタで引き続き実行できます。
bash script.undefined
または
sh script.undefined
または多分
perl script.undefined
など。
セキュリティの観点からも同じだ。どちらの場合も、アクティブユーザーの有効ユーザーIDがファイルの読み取りと実行に使用されます。粘り強いビット解釈された言語には影響はありませんが、これは別の話です。 (実際、これはセキュリティにとって重要です。)