tail head cat sleep
QR code linking to this page

manページ  — ISSETUGID

名称

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

内容

ライブラリ

Standard C Library (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 でも実装されました。

ISSETUGID (2) August 25, 1996

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.

This philosophy, in the hands of amateurs, leads to inexplicably mind-numbing botches like the existence of two programs, “head” and “tail,” which print the first part or the last part of a file, depending. Even though their operations are duals of one another, “head” and “tail” are different programs, written by different authors, and take different options!
— The Unix Haters' handbook