ISSETUGID(2) | FreeBSD System Calls Manual | ISSETUGID(2) |
名称
issetugid — uid または gid の変更によって汚染された現在のプロセスライブラリ
Standard C Library (libc, -lc)解説
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() システムコールは、常に成功し、返り値は、エラーを示すために予約されています。歴史
issetugid() システムコールは、 OpenBSD 2.0 ではじめて登場し、また FreeBSD 3.0 でも実装されました。August 25, 1996 | FreeBSD |