[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:37506] BTS #19116 cdrecord setuid問題
すがのです。
i386のsid環境で、setuidビットをたてたcdrecordを用いてCD-Rを焼こうとし
たのですが、幾つか権限が無いという警告が出ます。
探してみるとBTSに全く同じ現象を報告されてるかたがいらっしゃいました。
BTS #19116 <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=196116>
しかし、フォローは付いてないようです。
しかたがなく、Cはさっぱりわからないのですが、ソースを眺めてみました。
すると、cdrecord/cdrecord.c に次のようなコードを見付けました。
---------------------------------------------------------------------------
/*
* XXX Below this point we do not need root privilleges anymore.
*/
if (geteuid() != getuid()) { /* AIX does not like to do this */
/* If we are not root */
#ifdef HAVE_SETREUID
if (setreuid(-1, getuid()) < 0)
#else
#ifdef HAVE_SETEUID
if (seteuid(getuid()) < 0)
#else
if (setuid(getuid()) < 0)
#endif
#endif
comerr("Panic cannot set back effective uid.\n");
}
---------------------------------------------------------------------------
manpagesを読みながら意味を解釈すると、どうもここでreal userにsetuidし
てしまってるようですね。
この部分全体をコメントアウトしてrebuildしたのですが、問題なく動作して
るようです。
警告もでなくなりました。
# M-x comment-region は便利ですね、最近知りました。
原本のcdrtoolsにはこのコードは無いようですが、なんでこんなコードが紛れ
込んでるんでしょうね。
みなさんのところではこのような問題は発生してないのですか?
--
狐志庵
Sugano Yoshihisa(E) <mailto:koshian@xxxxxxxxxxx>