2016-10-03 1 views
0

私はいつもrootユーザーによって開始されたrubyスクリプトを持っています。スクリプトにはfou()という特定の機能があります。この関数は 'root'ではなく 'otherguy'というユーザとして実行する必要があります。私はどのようにユーザーをRubyスクリプトの中間に切り替えるか、関数を実行してからrootに戻しますか?ルビスクリプトでOSユーザーをどのように切り替えるのですか?

には子が

OS固有のコードを処理していない一つのプロセス
する必要がある限り、それはすべて/ほとんどのUNIXシステムのために働くだろうと大歓迎です。

編集:私は本当にあなたがuser id効果的かつgroup idを変更することができますProcess::Sys.setegidProcess::Sys.seteuid(integer)でRuby2.0.0

+0

これは子プロセスなしではどのように動作すると思いますか?あなたのケースでは、 "root"というユーザーがすでにこのファイルを実行しています。このファイルの一部を別のユーザーとして実行し、子プロセスになるプロセスをフォークせずに実行する方法はわかりません。正直なところ、どの言語で使用されているかにかかわらず、どのような環境でこれを行うのかはわかりません。 [フォークの例](http://brizzled.clapper.org/blog/2011/01/01/running-a-ruby-block-as-another-user/)あなたの気持ちが変わった場合に備えて – engineersmnky

+0

@engineersmnkyそうですこれはただ不可能であるという結論を受け入れ始めた。私はしばらく検索してきました。 –

答えて

2

に組み込まれているものだけを、外部の宝石を使用せずにソリューションを好むと思います。 Process::Sys.setuid(integer)Process::Sys.setgid(integer)と混同しないでください。私は考えます

Process::Sys.seteuid(12345) 
Process::Sys.setegid(54321) 
fou() 
Process::Sys.seteuid(0) 
Process::Sys.setegid(0) 

あなたが探しているもの(Linux)。

+1

それはそれについてです:)この質問をした後、この記事が見つかりました。多くの助けがありました:http://timetobleed.com/5-things-you-dont-know-about-user-ids-that-will-destroy-you/ –

関連する問題