[#37875] ERB の仕様 — URABE Shyouhei <s-urabe@...>

みなさまはじめまして。

44 messages 2003/07/15
[#37876] Re: ERB の仕様 — Masatoshi SEKI <m_seki@...> 2003/07/15

咳といいます。

[#37877] Re: ERB の仕様 — URABE Shyouhei <s-urabe@...> 2003/07/15

mput です。

[#37879] Re: ERB の仕様 — m_seki@... 2003/07/15

[#37883] Re: ERB の仕様 — URABE Shyouhei <s-urabe@...> 2003/07/16

mput です。

[#37884] Re: ERB の仕様 — m_seki@... 2003/07/16

[#37888] Re: ERB の仕様 — URABE Shyouhei <s-urabe@...> 2003/07/16

mput です。

[#37889] Re: ERB の仕様 — m_seki@... 2003/07/16

[#37890] Re: ERB の仕様 — URABE Shyouhei <s-urabe@...> 2003/07/17

mput です。

[#37891] Re: ERB の仕様 — MoonWolf <moonwolf@...> 2003/07/19

MoonWolfです。

[#37896] Re: ERB の仕様 — MoonWolf <moonwolf@...> 2003/07/20

MoonWolfです。

[#37898] Re: ERB の仕様 — Masatoshi SEKI <m_seki@...> 2003/07/20

咳といいます。

[#37900] Re: ERB の仕様 — MoonWolf <moonwolf@...> 2003/07/20

MoonWolfです。

[#37901] Re: ERB の仕様 — Masatoshi SEKI <m_seki@...> 2003/07/20

咳といいます。

[#37906] control user ID / group ID — Hidetoshi NAGAI <nagai@...>

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

20 messages 2003/07/20
[#37912] Re: control user ID / group ID — YOKOYAMA Takehiro <tac@...> 2003/07/21

[#37913] Re: control user ID / group ID — Hidetoshi NAGAI <nagai@...> 2003/07/21

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

[#37916] Re: control user ID / group ID — YOKOYAMA Takehiro <tac@...> 2003/07/21

[#37941] multipart/form-dataのためのcgi.rbの修正 — 堀川 久 <vzw00011@...>

こんにちは。

18 messages 2003/07/22
[#37944] Re: multipart/form-dataのためのcgi.rbの修正 — matz@... (Yukihiro Matsumoto) 2003/07/23

まつもと ゆきひろです

[#37945] Re: multipart/form-dataのためのcgi.rbの修正 — nobu.nakada@... 2003/07/23

なかだです。

[#37948] Re: multipart/form-dataのためのcgi.rbの修正 — matz@... (Yukihiro Matsumoto) 2003/07/23

まつもと ゆきひろです

[#37951] Re: multipart/form-dataのためのcgi.rbの修正 — nobu.nakada@... 2003/07/23

なかだです。

[#37953] Re: multipart/form-dataのためのcgi.rbの修正 — matz@... (Yukihiro Matsumoto) 2003/07/23

まつもと ゆきひろです

[#37954] Re: multipart/form-dataのためのcgi.rbの修正 — nobu.nakada@... 2003/07/23

なかだです。

[ruby-list:37916] Re: control user ID / group ID

From: YOKOYAMA Takehiro <tac@...>
Date: 2003-07-21 08:31:38 UTC
List: ruby-list #37916
In message "[ruby-list:37913] Re: control user ID / group ID", Hidetoshi NAGAI wrote at 21 Jul, 
2003...
 >もし可能なら,samba 用の変更パッチを送っていただけると
 >どういう状況をどう修正しなければならなかったかの理解の
 >助けになるかと思います.
 >また,もし BSD/OS だけを特別扱いしなければならなくなった場合,
 >#if defined(????) には何を指定したら良いかも教えていただけませんか?

sambaの場合に、具体的に問題になった部分は次の通りです。
#define USE_SETREUID 1 の場合に有効になる部分だけ抜き出しています。

lib/util_sec.c

static void assert_gid(gid_t rgid, gid_t egid)
{
	if ((egid != (gid_t)-1 && getegid() != egid) ||
	    (rgid != (gid_t)-1 && getgid() != rgid)) {
		if (!non_root_mode()) {
			DEBUG(0,("Failed to set gid privileges to (%d,%d) now set to (%d,%d) uid=(%
d,%d)\n",
				 (int)rgid, (int)egid,
				 (int)getgid(), (int)getegid(),
				 (int)getuid(), (int)geteuid()));
			smb_panic("failed to set gid\n");
			exit(1);
		}
	}
}

restore_re_gid(void)
{
-	setregid(saved_rgid, -1);
-	setregid(-1,saved_egid);
+	setgid(saved_rgid);
+	setegid(saved_egid);

	assert_gid(saved_rgid, saved_egid);
}

初期化の過程で、saved_rgid = 0, saved_egid = 32766 (wheel/nogroup) の
状態でrestore_re_gid() が呼び出されたとき、setregid() が正常に動作しないため、
assert_gid()で
	Failed to set gid privileges to (0,32766) now set to (32766,32766) uid = (0,0)
と表示され、終了してしまうのです。

restore_re_gid() を上記のように書き換えることにより、正常に動作するように
なりました。ここでsetrgid()ではなくsetgid()を使っているのは、
man setrgidに非推奨と書いてあるからです。
これも他のOSとは異なる点だと思います。


実装上影響があるのはp_gid_exchange()ですね。
	if (setregid(egid,gid) < 0) rb_sys_fail(0);
の部分を
	if ((setgid(egid) < 0) || (setegid(gid) < 0))
		rb_sys_fail(0);
のように変更することになるのだと思います。


なお、BSD/OSだけ特別扱いする場合は、#if defined(__bsdi__) と
指定してください。


--
横山岳浩
tac@amris.co.jp

In This Thread