永井@知能.九工大です.

From: Takahiro Kambe <taca / sky.yamashina.kyoto.jp>
Subject: [ruby-dev:14693] Re: How to abondon saved uid privilege
Date: Thu, 6 Sep 2001 00:47:23 +0900
Message-ID: <200109051547.f85FlJW02033 / edge.sky.yamashina.kyoto.jp>
taca> In message <999700675.662743.18683.nullmailer / ev.netlab.jp>
taca> 	on Thu, 6 Sep 2001 00:00:28 +0900,
taca> 	matz / ruby-lang.org (Yukihiro Matsumoto) wrote:
taca> > あまり話についていけてるとは言えないのですが、要するに
taca> > setruid/seteuidを優先するべきということなんでしょうか?
taca> おそらく規格(POSIX等)的には、setuid()/seteuid()なんでしょう。

仕様の変化が入り乱れて,私もあまりついていけていないんですが,
setuid / seteuid を優先すれば済むかというと,
そうでもなさそうです.
この組合わせが取られるようにしてしまった場合,
Ruby スクリプトへの set uid ビットが無効とされる環境では,
実 uid と実効 uid とを共に root 以外にして,
かつ,それぞれを違えるということが不可能になります.

# Linux は,その環境になりますよね?

実 uid を変更するには root 権限が必要ですよね.
で,root での setuid では,実も実効も保存も同じに変ってしまいます.
一般ユーザの seteuid では,実または保存に等しい id にしか
実効を変更することはできません.
root による seteuid なら,実効だけを変更できますが,
これはつまり実 uid が root のままってことになりますよね.
set uid ビットによって実と保存とが違っている状況が作れない以上,
root 以外で実と実効とを違える手段がありません.

もちろん,これが必要かどうかは
Ruby スクリプトにどの程度までを期待するかにも依るのですが...
-- 
                                         永井 秀利 (九工大 知能情報)
                                             nagai / ai.kyutech.ac.jp