From: Hidetoshi NAGAI Date: 2003-07-21T02:45:29+09:00 Subject: [ruby-list:37910] Re: control user ID / group ID 永井@知能.九工大です. ご意見をありがとうございます. From: Koji Arai Subject: [ruby-list:37909] Re: control user ID / group ID Date: Mon, 21 Jul 2003 01:16:44 +0900 Message-ID: <20030721.011625.78716001.JCA02266@nifty.ne.jp> > > # もし皆の納得が得られるなら,今月中に予定されている 1.8.0 に > > # 含めることができるといいなとは考えていますので, > > # 急ぎ意見をいただけますと嬉しく思います. > それほど急ぐ必要もないかと思います。それよりもいきなり本体に > 実装せずに拡張ライブラリとして提供し、実際に使ってもらった方 > が良いと思うのですがいかがでしょうか? ごめんなさい.確かにこの記述は勇み足でしたね. ですが,真っ当な ID 操作系のメソッドが存在しないという現状を あまり好ましくないと感じているのは事実です. # そういう風に言った方が意見が出るだろうとの戦略もありました. # ...って,ばらしてしまったら意味がないか.(^_^; # ですが,手元に残っている課題をできるだけ早いうちに # (遅くとも本年度中に) ある程度の道筋をつけて決着しておきたいために # 急いでいるというのは本当です. > 本体の方は互換性のためにもひとまず現状を維持するのが良いと思います。 Process モジュール下のモジュールとして封じ込めていますので, 現状との互換性には全く支障はありません. 「なら,拡張ライブラリでの提供でもいいのでは?」と言われると, 確かに否定はできません. そうした意見も含めて,「本体にはそうした機能は一切不要」だとか, 「拡張ライブラリならありかもね」だとか,「ぜひ組み込むべき」だとか, 「かえって迷惑だからそんなものは使うべきではない」だとか, せめて放置にならない程度の結論は出しておきたいのです. > あと、先人に習えということで perl などがどのような実装になっ > ているか知りたいですね。 確か perl では特殊変数への代入操作でしたよね? > 詳しい方 ちなみに前回の議論時に, 「 Programming Perl で ($<,$>) = ($>,$<); が setreuid を呼び出す という記述を見て非常に大きな違和感を感じた」 という意見は出ていました. > > module Process::ID_Syscall 単なるシステムコールの直接実装 > > 単純な操作がどうしても欲しい人のためのサービス提供 > > ポータビリティは期待できない > > Process::POSIX とかで POSIX のインタフェースを提供すればどうでしょう? > システムのそれを使いたい場合は syscall() が使えますし。 > # と提案する理由は ID_Syscall という名前が単に好きじゃないから(^^ 実は書いた本人もこの名前は気に入っていません.(^_^; 「良い名前求む」が本音です. メソッド群を封じ込めるためにモジュールを使ってますが, Process モジュールのモジュールメソッドとしての実装で可というなら この名前の問題はなくなります. > > module Process::UserID ユーザ ID 操作 > 名前が長いので Process::UID とかでどうでしょう? > > > module Process::GroupID グループ ID 操作 > > メソッド集合は module Process::UserID と同じ > 同じ理由で Process::GID とか。 略しすぎというのでなければそれでいいと思います. > Unix のこの手の関数は歴史的な経緯でしょうか?とても複雑でな > かなか理解しづらいものがあります。ですので、ポータビリティの > あるインタフェースを提供しようという試みには意義があると思い > ます。 そうなんですよね. それだけに,そうした複雑な部分を wrap して単純化し, OS 環境が変わっても以前のスクリプトに手を入れることないような記述を 簡単に書けるようにしたいと考えたわけですが, > ですが、こなれていない状態で ruby にいきなり組み込んで > も複雑さを促進するだけのように思います。 かえって複雑になると感じられますか... 「こなれていない」という件については,情報を得ることができた範囲では 仕様上は問題がないと考えています. 実機がない OS については,入手できたマニュアルなどの記述から 仕様を想定し,実装に問題はないと思っていますが, その範囲以外は確かに不明です (マニュアルのミスもありえますし). それ以外については期待通りに動いたとも動かないとも情報がなく, 判断することができません. patch は昔から公開はしていたわけですが,報告は得られませんでした. その点で「こなれていない」と言われれば否定できません. 報告がないのは「そんな機能が欲しいとは誰も思っていない」という ことと同意であるとも言えそうではあります. この議論の結論がそういうことになるのであれば, この実装についての案を捨てるだけのことです. その場合は拡張ライブラリとしても必要なしということになるでしょうね. -- 永井 秀利 (九工大 知能情報) nagai@ai.kyutech.ac.jp