|
>>2550 68user さん なるほど。 ttyでstdoutを出力してしまえば, stderrが後に残るというわけですね。 (正しい表現が分かっていませんが。) ありがとうございました。 |
|
こんにちは。 今日、こちらのページをみて、suidというものを使えば、 とあるCGIを「nobodyじゃない権限で実行させたい」と いう願いがかなうということがわかり、早速試してみました。 まず、こちらにサンプルでおいてあるwhoami.cgiをそのまま設置して パーミッションをrwsr-xr-xとしたところうまく動きました。 その後、自作のCGI(nobodyでは動かしたことがあるもの)を同様に nobodyでないユーザで動かそうと思ったら「Internal Server Error」 となってしまいました。 それで、うまくうごいた実績のあるwhoami.cgiを改造しながら原因を探した ところ、どうやら「require 'jcode.pl';」を書いてしまうと 「Internal Server Error」となってしまうということがわかりました。 require 'jcode.pl';行をコメントアウトすれば動きます。 なんとか、この一行を含んでいるものも、setuidして動かすことは出来ない ものでしょうか。 なにかよい方法がございましたらご教示ください。 宜しくお願い申し上げます。 |
|
>>2552 stone_free まず、 #!/usr/bin/perl require 'jcode.pl'; このスクリプトをコマンドラインから動かして下さい。カレント ディレクトリに jcode.pl があればちゃんと動くでしょう。 suid したスクリプトを実行すると、perl は自動的に汚染モード (taint mode) に切り替わります。いちいちスクリプトを suid して web 経由で実行するのは面倒なので、perl に -T オプションを付けて 汚染モードで動作させます。 #!/usr/bin/perl -T require 'jcode.pl'; 今度は jcode.pl が見付からない、と言われるはずです。 require がライブラリを探すパスは @INC で設定されていますので、今度は #!/usr/bin/perl print "@INC\n"; と #!/usr/bin/perl -T print "@INC\n"; で違いを調べます。 # perl -e 'print "@INC\n"' # perl -Te 'print "@INC\n"' # としてもいいです。 すると、上の方では @INC の最後に `.' (カレントディレクトリ) が含まれて いますが、-T を付けると `.' が含まれていないことがわかります。ドキュメント化 されていないのかもしれませんが、これは汚染モードの仕様なのでしょう。 というわけで、 require './jcode.pl'; require '/foo/bar/jcode.pl'; などと、@INC に頼らず require するか、require する前に push(@INC, '.'); すれば解決です。 その他、suidperl で動かすと PATH だとか umask だとかで文句を 言われることがあるかもしれませんが、いきなりブラウザ上で動作を 検証することはせず、必ず -T 付でコマンドラインから動作を確かめる ようにして下さい。 |
|
こんにちわ。早速なんですけど、教えて下さい。 以下のことを行った場合、 (1)javaのClassファイルをHP-UNIX上でコンパイル後、圧縮。 (2)windows2000にダウンロード後、CDに焼く。 (3)Solarisで解凍し、実行環境に投入。 で、Solarisで正常に動作するでしょうか? javaだから出来るような気もするんですけど、やっぱりリコンパイルは必要な気もして。 よろしくお願いします。 |
|
ひとつ気づいたこと。 これまでずっと,tar + gzip 形式のファイルを展開するのに % tar zxvf hoge.tar.gz といった順序でオプションを指定していました。 ところが,GNU Tar のマニュアルを見ると, こんなことが書いてありました。 <http://www.linux.or.jp/JM/html/GNU_tar/man1/tar.1.html> | tar への最初の引数は、オプション Acdrtux のいずれかでなくてはならない。 | この後にはどのオプション機能を指定する事も出来る。 最初の記述法は厳密に言うと間違いということに なりそうなんですが,どんなものでしょうか。 |
|
>>2553 68user 68userさん、有難うございました。 大変参考になりました。 おかげさまで、動かすことができました。 感謝感激です。 もうひとつ、教えていただいていいでしょうか。 今回の手順のひとつに > perl に -T オプションを付けて汚染モードで動作させます。 > #!/usr/bin/perl -T > require 'jcode.pl'; > 今度は jcode.pl が見付からない、と言われるはずです。 とありましたが、このとおりファイルに書いて # perl test.cgi としてコマンドラインで実行してみたのですが、 Too late for "-T" option at test.cgi line 1. と出てしまいました。 #!/usr/bin/perlの後にオプションをつける場合は、クオートか なにかでくくらないといけないのでしょうか。 また、「汚染モード」という物騒な名前はなにか訳があるのでしょうか。 やはり、本来のユーザと違う権限で実行できてしまうから危険である ということでしょうか。 |
|
>>2554 たこ。 > で、Solarisで正常に動作するでしょうか? Java のバージョンが合っていれば正常に動作するんじゃないでしょうか。 まぁ僕なら怖いので、Solaris でコンパイルして生成された class ファイルを比較してみます。 >>2555 CZ > tar への最初の引数は、オプション Acdrtux のいずれかでなくてはならない。 原文は The first argument to tar must be one of the options: Acdrtux なので誤訳だと思います。 tar に与える最初の引数の中には、必ず Acdrtux のうちの 1つを 指定しなければならない あたりでどうでしょうね。って、自信はないのですが。 |
|
>>2556 stone_free > #!/usr/bin/perlの後にオプションをつける場合は、クオートか > なにかでくくらないといけないのでしょうか。 原理を書き出すとまた長くなってしまうので割愛しますが、 #!/usr/bin/perl -T と書いたスクリプト hogescript を実行するには % ./hogescript とします。 これは % /usr/bin/perl -T ./hogescript と等価であって、 % /usr/bin/perl ./hogescript とは等価ではありません。 > また、「汚染モード」という物騒な名前はなにか訳があるのでしょうか。 ラクダ本では「汚染モード」と訳してあります。詳しくはこちらなど。 http://www-sampei.ctrl.titech.ac.jp/perldoc/perl_20.html |
|
>>2558 68user なるほど!よくわかりました。 重ね重ねありがとうございました。 |
|
こちらのページのお陰で、サーバプログラミングに入ることが出来ました。 CP/M、DOS、Windowsとやってきたのですが、サーバプ ログラミングに入れなくて困っておりました。 仕事でサーバ側のプログラムを組む必要に迫られ、Unixも知らな いし、サーバサイドの概念もつかめなくていたのに、今ではFTPや HTTP、POPもcronも使えるようになりました。 ついでにPerlまで覚えてしまいました。 黙って読ませていただくばかりでは心苦しく、お礼を述べさせて頂き に参りました。 今後もUnix勉強の基本ページとして利用させていただきます。 親切で分かりやすいページを作って下さり有り難うございます。 心より感謝申し上げます。 |
|
おっと、私もこのページにお礼を言いに来たのですが プチ先駆者が(笑) このページには大変お世話になっています ネットワークプログラミングの部屋でファイルディスクリプターという 概念を初めて知りました、僕は学生なのですが将来こういう方面の仕事に つきたいと思ってます。大変に参考になるページでした このページの更新、たのしみにしてますm(。。)m |
|
>> 2557 いろいろと調査してみた結果、windows上でコンパイルしたものを圧縮してsolarisに持っていっても、JAVA周りの環境さえ同じなら正常に動作するということなので、大丈夫だと思います。 ありがとうございました。 |
|
お世話になります、小僧です。 AIX上での文字コードに関してお聞きしたい事があります。 ファイルの文字コードを確認するコマンドというのは 存在するのでしょうか? 例えば、「このファイルの文字コードはShift-JISだな」などの 判断を行えるようなコマンドの事なのですが。 それと、iconvを行う事が出来る文字コードは、 "/usr/lib/iconv"ファイルに登録されているようなのですが、 このファイルはデフォルトでは存在しないのでしょうか? ご存知の方がいらっしゃいましたら、宜しくお願い致します。 |
|
kccなんてコマンドがありましたけど、AIXに存在するかどうかは 不明です。 Ex: kcc -c kannji_file.txt ん〜ちょっと調べてみると、どうもLinux系だけみたいだなぁ・・・ |
|
はじめまして、 現在色々とcgiを作成しており、 色々とよくわからないバグを調べている内 たどり着いた次第です。 他のサイトではあまり解説されていない ヘッダの解説など大変助かりました。 これからも更新楽しみにさせていただきます。 |
|
>>2564 スナフキン kccコマンドですが、ちょっと無さそうですね・・・ 現在使用しているAIXにmanコマンドが入っていないので なんともいえませんが、ネットや手持ちの資料には 載って無さそうです。 ついでに、と言っては失礼ですが、iconvでもう一つ質問を。 iconvコマンドで、変換後に存在しない文字が存在した場合、 自動で"_"に変換されるようですが、この"_"を他の文字に 変更する事は可能なのでしょうか? 例えば"*"にしたりする事は可能なのでしょうか? ご存知の方がいらっしゃいましたらアドバイスお願い致します。 |
|
>>2564 スナフキン 文字コードを判断する方法ですが、mule に付属している coco、 昔 fj に流れた kanjitype、jcode.pl の jcode::getcode、 mule/emacs のステータスバーに表示される E/S/J の文字。 僕が知っているのはこれくらいです。 |