スポンサーリンク

ISSETUGID(2) FreeBSD システムコールマニュアル ISSETUGID(2)

名称

issetugid − 現在のプロセスの uid または gid の変化による汚染状況

ライブラリ

標準 C ライブラリ (libc, −lc)

書式

#include <unistd.h>

int

issetugid(void);

解説

issetugid() システムコールは、プロセスの環境またはメモリアドレス空間が ‘‘ 汚染されている’’ と見なされる場合 1 を返し、そうでない場合は 0 を返しま す。

setuid または setgid ビットのどちらかが設定されたプロセスを execve(2) シ ステムコールで実行した (そして結果として追加の特権が与えられた) 場合、あ るいはプロセスの実ユーザ ID、実効ユーザ ID、退避ユーザ ID、もしくは実グ ループ ID、実効グループ ID、退避グループ ID のいずれかが実行後に変更され た場合、そのプロセスは汚染されていると見なされます。

このシステムコールは、ユーザから得られた情報を使用するのが安全かどうかを ライブラリルーチン (たとえば libc や libtermcap) が信頼性を持って判定でき るようにするために存在します。特に getenv(3) からの結果を、オペレーション の制御のために使用する場合には疑いを持って見る必要があります。

‘‘汚染された’’ 状態は、 fork(2) システムコール (あるいは popen(3) のよう な fork を呼び出す他のライブラリコード) の結果として、子プロセスに継承さ れます。

別のプログラムを実行する準備をするときにすべての特権をクリアするプログラ ムは、環境もリセットすると想定されます。したがって ‘‘汚染された’’ 状態は 引き渡されません。 setuid を開始するけれども汚染されていないプロセスを作 成できる必要のある su(1) のようなプログラムにはこれは重要です。

エラー

issetugid() システムコールは必ず正常に完了するので、エラーを示すための戻 り値はありません。

関連項目

execve(2), fork(2), setegid(2), seteuid(2), setgid(2), setregid(2), setreuid(2), setuid(2)

歴史

issetugid() システムコールは OpenBSD 2.0 ではじめて登場し、 FreeBSD 3.0 でも実装されました。

FreeBSD 10.0 August 25, 1996 FreeBSD 10.0

スポンサーリンク