まつもと ゆきひろです

In message "[ruby-dev:14688] Re: How to abondon saved uid privilege"
    on 01/09/05, Takahiro Kambe <taca / sky.yamashina.kyoto.jp> writes:

|これも参考に話を元に戻すと、永井さんが出されていたサンプルに違和感を感
|じていたのですが、BSD系(4.4BSD由来)では、
|
|setuid(id)		ruid, euid, saved uid全部idに変える。
|seteuid(id)		euidだけidに変える。
|setreuid(rid, eid)	ruidをridに、eidをeuidに変える。
|			ruidが変わった場合は、saved uidもeuidに変わる。
|			但し、-1をridやeuidに指定した場合は今のまま。
|
|ruid: real uid (実ユーザID)
|euid: effective uid (実効ユーザID)
|saved uid: setuidビット付きで実行された時点での実効ユーザID
|
|saved uidを含めて単純に権限を放棄したいなら、setuid(2)。
|ruidを変えずにeuidとsaved uidを変えたいなら、setreuid(2)。
|
|でいいのかな。おっと、setreuid(2)のHISTORYに、
|
|     The setreuid() function call appeared in 4.2BSD.  An incompatible version
|     was implemented in 4.4BSD.  It was reimplemented in NetBSD 1.2 in a way
|     compatible with 4.3BSD, SunOS and Linux, but should not be used in new
|     code.
|
|なんて記述がある!

あまり話についていけてるとは言えないのですが、要するに
setruid/seteuidを優先するべきということなんでしょうか?