[Mew-dist 08716] Re: suid root imget without ~/Mail

Hiroto Kagotani kagotani at example.com
1999年 5月 6日 (木) 17:23:42 JST


> kagotani> RPOP + Mew の環境を作ろうとしているのですが、~/Mail を持たな
> kagotani> い新規のユーザが imget しようとすると、suid root した imget 
> kagotani> がフォルダを作ることができずにエラーとなってしまいます。
> kagotani> (im-100 でも im-115 でも)
> 
> これって、~ は NFS mount なので、root access が nobody に変換されてしまい、
> うまくいかない、ということでしょうか?

~ は NFS ですが、その問題ではないと思います。

% ls -l /usr/local/bin/imget
-r-sr-xr-x  1 root  bin  7595 Nov 28 09:49 /usr/local/bin/imget
% imget
imget: Getting new messages into +inbox....
Insecure dependency in mkdir while running with -T switch at /usr/local/lib/IM/Folder.pm line 358, <POPd> chunk 23.

となります。

% mkdir -p ~/Mail/inbox
% imget
imget: Getting new messages into +inbox....
    1  05/06 Kagotani Hirot t                  t                               
imget: 1 message(s).
% ls -l ~/Mail/inbox
total 4
-rw-------  1 kagotani  staff  677 May  6 15:38 1

ですので、nobody の問題は出ていません。(ちなみに、以上は im-100)

> imget では、まず最初に特権ポートを確保し、root権限を捨ててから
> ファイルアクセスを始めるようにしているつもりなので、仕様的には
> 問題ないと思っているのですが、そもそも perl で root を捨てきれ
> ないようなので、それが問題なのかもしれません。

#!/usr/local/bin/perl
$>=$<;
mkdir $ARGV[0],0777;

を suid root で実行すると、

Insecure dependency in mkdir while running with -T switch at ./suidmkdir line 3.

となるわけですね。root を捨てない場合とはメッセージが異なるようです。
perl のソースをながめてみたりもしましたが、-T を取り消す方法はよくわか
りませんでした。

修正の手間の問題はありますが、

> kagotani> (サーバとの通信だけをするプログラムを imget から切り離す?)

とするのが安全確実でいいような気がします。
こうすれば ScanSbr も suid root imget で使えるようになりますし。
-- 
籠谷裕人 <kagotani at example.com>



Mew-dist メーリングリストの案内