execve() executes the program pointed to by filename. filename must be either a binary executable, or a script starting with a line of the form "#! interpreter [arg]". In the latter case, the interpreter must be a valid pathname for an executable which is not itself a script, which will be invoked as interpreter [arg] filename.
発展系が恐いな (スコア:2, すばらしい洞察)
後、この手のよく知られてない例外的な物ってセキュリティホールの温床になりそうな点も嫌だな。
Re:発展系が恐いな (スコア:3, すばらしい洞察)
実行形式ファイルを、
OS側が、実行形式であると、問答無用で明示的に主張しないのことじゃないかな。
例えば、初めて開く実行形式ファイルは、OS側が必ず「実行するか」と問うようにするとかすれば、ちょっとよくなる。
それでも、スクリプトの類はどうしようもないけど、ライブラリに「実行者が意図しない動作を実行する可能性がある動作をさせる場合、警告を出す」機能を組み込み、アプリ制作者に積極的に使わせるようにすれば、結構大丈夫かも。
Such like...
「このファイルは、初めて実行されようとしています。あなたの予期しない動作を実行する可能性があります。実行しますか?」
「このファイルは、以前実行された後、内容が変更されています、あなたの予期しない動作を実行する可能性があります。実行しますか?」
Re:発展系が恐いな (スコア:0)
というか、Unix系では実行スクリプトと普通の専用バイナリをどう分けてるのだろう?アプリごとに「これは実行ファイルを読むアプリ」とフラグを立ててるのかな?線引き(マクロつきのMSOfficeファイルなんて「ほとんど実行ファイル」だけど、OSではそこまで面倒を見ずにファイルを受け取ったアプリの側で警告を出させる手もあるし、実際そうなってる)も難しそう。
Re:発展系が恐いな (スコア:1)
# あー、でもひょっとしてGNOMEとかKDEとかであいこんをだぶるくりっくしたりする話なのかな。おじさんそういうのはむつかしくてよくわかんないなぁ(^^; 多分、/etc/mime.types を使って MIME Type を決めて、そこからアプリを起動する方法を指定するのだろうけれども。
Re:発展系が恐いな (スコア:3, 参考になる)
Re:発展系が恐いな (スコア:1)
#! で始まっていないシェルスクリプトを実行するためじゃないでしょうか。
そんな機能は必要無いだろうって気もしますが…
Re:発展系が恐いな (スコア:0)
Linux(2.6.18)の man 2 execveの冒頭:
ありがとー。
# お礼のみにてAC