68user's page 掲示板

Prev< No. 239〜240> Next  [最新発言に戻る] [過去ログ一覧]
No. 239 # 68user 1999/03/29 (月) 13:46
> forkされたプロセスでは、再びnobodyに戻ってしまう事です。
やはりうちではそうはなりませんでした。
    #!/usr/local/bin/perl
    $|=1;
    $ENV{PATH}="";
    print "Content-type: text/plain\n\n";
    open(IN,"/bin/cat /etc/master.passwd");
    print <IN>;
    if ( fork ){
        system("/usr/bin/id");
    } else {
        system("/usr/bin/id");
    }
というスクリプトをowner=root、permission=4755にして、コマンドライン、
httpd 経由両方で動くことを確認しました。600な/etc/master.passwdの
中身は表示されましたし、idの結果は
    uid=65534(nobody) euid=0(root)
となりました。forkしても実効ユーザはrootのままでした(まぁ system を
実行するってことは、fork/execしてるわけですが)。

なお、PATHをクリアしないと
    Insecure $ENV{PATH} while running setuid at ./hoge.cgi line xx.
となりました。

あ、ファイルを作成してみるのを忘れてた。もしかしたらそのとき作成した
ファイルのオーナーは実効ユーザIDでなく、実ユーザIDが使われるのかも
しれません。

No. 240 # M.Masuda 1999/03/29 (月) 15:19
えぇぇぇぇぇぇぇぇ!!!!!!???????
なんでぇ???
#すいません無駄な行を書いてしましました。(^^ゞ

なんか、うちの環境system関数が変です。
suidを立てずに、普通に755のパーミッションです。

#!/usr/bin/perl
print "Content-type: text/plain\n\n";

print "Script Start\n";

if(system("")){
                print "Done..\n";
}else{
                print "NG! \n";
}

#system("ls -l 2>&1");

print "End Script\n";

2つめのsystem関数(system("ls -l 2>&1")の部分)を、コメントア
ウトした時としない時の結果の結果を教えてくれませんか?

うちの環境では、2つ目のsystemを有効にすると、サーバーエラー
になります。
コマンドラインから実行すると、正常なんですが...。
#なぜ????

Prev< No. 239〜240> Next  [最新発言に戻る] [過去ログ一覧]