68user's page 掲示板

Prev< No. 239> 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が使われるのかも
しれません。

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