_SECURE_PATH(3)

名称
_secure_path - ファイルが安全であるように見えるかどうかを判定する

ライブラリ
libutil

書式
<sys/types.h> <libutil.h> int _secure_path(const char *path, uid_t uid, gid_t gid)

解説
この関数は、指定のパスについて基本的なセキュリティチェックを行います。 これは root 特権で実行中のプロセスが使用することを意図しています。指定の ファイルの内容を信頼するかどうかを判定するためです。この関数は、システムの 危険性を検出するために使用される方法としてよく使われます。 ファイルは、次の条件を満たす場合に ‘安全である’ と考えられます。

1.  ファイルが存在し、それが通常のファイルである (シンボリックリンク、 ファイル、デバイスに固有のファイル、または名前付きのパイプファイル でない)。

2.  誰もが書き込み可能な属性を持っていない。

3.  uid が -1 でない場合は、指定された uid または uid 0 のユーザによって 所有されている。

4.  グループの書き込み属性がない、または gid が -1 でない場合は指定の gid によるグループ所有権がある。

戻り値
この関数は、ファイルが存在し、安全であると考えられる場合は 0 を返します。 ファイルが存在しない場合は -2 を返します。 セキュリティ障害を示す場合には -1 を返します。 syslog(3) が、この関数の処理失敗を理由を含めて LOG_ERR 優先順位のログに 記入するために使用されます。

バグ
実行されるチェックは基本的なものであり、この関数の使用と参照ファイルへの アクセスの間の競争状況を除去しようとする試みは行われません。

関連項目
lstat(2), syslog(3)

歴史
この関数の由来であるコードは、Berkeley Software Design,Inc. によって FreeBSD プロジェクトに寄与されたものです。