To: しらいさん
こんばんは、鈴木@埼玉県(在住)です。
On Sun, Jan 08, 2006 at 02:01:35AM +0900, Takashi SHIRAI wrote:
...(略)...
> 少なくとも私の知る限り、exec() の試行より先に自前で「#!」
> を評価してしまうような shell の実装はありません。
> 普通は exec() の実行が ENOEXEC で失敗した時に初めて shell
> 側で「#!」を評価します。ENOEXEC 以外で失敗した時にも「#!」は
> 見ません。
ENOEXECが、ファイルが実行可能でないとシェルが認識する
状態なのですね。
> > ところで、スクリプトが、 errno に ELIBBAD をセット
> > して -1 を返して終了すると、スクリプトはファイルが
> > 実行可能状態でなかったと認識し、スクリプトファイル
> > として処理するステップに進むのでしょうか?
>
> exec() に成功した場合はその process は二度と元の shell に
> 戻って来ませんから、「-1 を返す」こと自体が不可能です。
> 一般に exec() で起動されたコマンドの終了ステータスは、その
> exec() を実行した process ではなく、その親 process が wait()
> によって取得します。なので errno は参照不能です。
> 一方 exec() に失敗した場合は、終了ステータスではなくてその
> exec() そのものの返り値として -1 が返って来るので、exec() を
> 実行した process がその後の処理を引継ぎます。
> なので exec() に失敗したかのように shell script 側で偽装す
> ることは不可能ですね。勿論、shell script でなくてもそういう
> 偽装コマンドを作成することは出来ません。
解説ありがとうございました。
一応、exec()の基礎知識は持っているのですが、
クラッカーさんがよろしくやれるかも、と思った
次第です。
スクリプトファイルはシェルで特殊な処理をしていると
思いこんでいたので勉強になりました。ありがとう
ございました。
> 牧野さん・しらいさんほか皆様
------------------------------------------------------------
鈴木 康弘(SUZUKI Yasuhiro)
yasu@xxxxxxxxxxx
http://www31.ocn.ne.jp/~yswww/myself/
References:
- [linux-users:106108] Re: #!で始まるスクリプトSUZUKI Yasuhiro
- [linux-users:106109] Re: #!で始まるスクリプトTakashi SHIRAI
- Prev by Subject: [linux-users:106110] Re: #!で始まるスクリプト
- Next by Subject: [linux-users:106112] ML記事のBlog化による試験公開に関するご意見募集
- Previous by thread: [linux-users:106109] Re: #!で始まるスクリプト
- Next by thread: [linux-users:106110] Re: #!で始まるスクリプト
- Indexes:[Main][Thread]