OSDN Git Service

Update release for LDP 3.67
[linuxjm/LDP_man-pages.git] / release / man3 / fexecve.3
index b9169c6..7a6347d 100644 (file)
 .\" This file was generated with po4a. Translate the source file.
 .\"
 .\"*******************************************************************
-.TH FEXECVE 3 2010\-09\-15 Linux "Linux Programmer's Manual"
+.\"
+.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved.
+.\" Translated 2006-07-31, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
+.\" Updated 2009-02-23, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v3.18
+.\"
+.TH FEXECVE 3 2014\-04\-20 Linux "Linux Programmer's Manual"
 .SH 名前
 fexecve \- ファイルディスクリプタで指定されたプログラムを実行する
 .SH 書式
@@ -61,7 +66,7 @@ _GNU_SOURCE
 \fIfd\fP を用いて指定する点である。 ファイルディスクリプタ \fIfd\fP は、読み込み専用でオープンされていなければならず、
 呼び出し元はファイルディスクリプタが参照するファイルに対する 実行許可を持っていなければならない。
 .SH 返り値
-\fBfexecve\fP()  は呼び出しに成功した場合、戻ることはない。 エラーの場合、返り値として \-1 が返され、 \fIerrno\fP
+\fBfexecve\fP()  は呼び出しに成功した場合、戻ることはない。 エラーの場合、返り値 \-1 で関数が返り、 \fIerrno\fP
 が適切に設定される。
 .SH エラー
 エラーは \fBexecve\fP(2)  と同じだが、以下のエラーが追加になっている:
@@ -75,12 +80,24 @@ _GNU_SOURCE
 \fBfexecve\fP()  は glibc 2.3.2 以降で実装されている。
 .SH 準拠
 POSIX.1\-2008.  この関数は POSIX.1\-2001 では規定されておらず、 他のシステムで広く利用できるわけではない。
+POSIX.1\-2008 で規定されている。
 .SH 注意
 Linux では、 \fBfexecve\fP()  は \fBproc\fP(5)  ファイルシステムを使って実装されている。
 そのため、この関数を呼び出す時点では \fI/proc\fP がマウントされて利用可能となっている必要がある。
+
+\fIfd\fP がインタプリタスクリプトを参照するファイルディスクリプタで、 close\-on\-exec がセットされていた場合 (\fBfcntl\fP(2)
+の \fBFD_CLOEXEC\fP の議論を参照)、 \fBfexecve\fP()
+はスクリプトの実行に失敗することになる。ならなら、スクリプトインタプリタがスクリプトファイルにアクセスしようとするときには、 \fIfd\fP
+はすでにクローズされているからである。
+
+\fBfexecve\fP() の裏にある考えは、呼び出し元が、ファイルを実行する前に実行ファイルの内容を検査 (チェックサムを確認)
+できるようにすることである。単に、ファイルをオープンして内容のチェックサムを検査し、それから \fBexecve\fP(2)
+を行うのは十分ではない。なぜなら、2 つのステップの間で、ファイル名や、パス名のディレクトリの前の方が入れ換えられる可能性があるからだ
+(例えば、シンボリックリンクのリンク先を変更するなど)。\fBfexecve\fP() は、チェックサムの検査と \fBfexecve\fP()
+の呼び出しの間で、ファイルの\fI内容\fPを変更できる可能性があるという問題への対策にはならない。この問題に対する対応策は、確実に、ファイルのアクセス許可を設定し、悪意のあるユーザーがファイルを変更できないようにすることである。
 .SH 関連項目
 \fBexecve\fP(2)
 .SH この文書について
-この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.67 の一部
 である。プロジェクトの説明とバグ報告に関する情報は
 http://www.kernel.org/doc/man\-pages/ に書かれている。