[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>