[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[linux-users:106111] Re: #!で始まるスクリプト


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/

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
References: