> ここでその IRC での雑談会の紹介をしたいのですが、 > よろしいでしょうか? よいですよ〜。僕も暇があれば、参加させていただこう かなと思います。 ただ、「文字コードは Shift_JIS で」というのは 参加者にとって ある意味ハードルが高いのでは ないかなと思いました。 # そこに至った事情を知らないので、ただ思っただけです。 |
よいですよ〜。僕も暇があれば、参加させていただこう >かなと思います。 ご配慮有難うございます。それから、68user さんに参加して頂くと とても話がはずむと思っています。本当に、お暇な折にで結構ですから、 お話したいと思っておりました。 それでは、お言葉に甘えて案内を掲示させて頂きます。 以下の要領で、毎週土曜日深夜から日曜日にかけて UNIX に関する雑談会を催しています。UNIX を肴に くつろいだお話をするのが目的で、会話に参加して 頂ければ現在の使用 OS などの参加資格はありません。 win による参加も OK です。 詳しい要領とIRC クライアントの設定方法は http://members.tripod.co.jp/ageha/irc にあります。これらの説明は読んだ方が無難かと思います。 ○日時: 毎週土曜日 23:00 〜日曜 2:00 ○サーバ: irc.fef.net:6667 他 ○チャンネル: #tsu ○禁止事項 (1) perl およびセキュリティに関する話題 (2) ログとりのみの参加 (一般的な意味での away などは問題ありません。 また、のべつまくなし喋らなければならないというのでありません。) ○注意事項: #tsu は Shift JIS 限定です。 # Shift JIS は、mIRC のためらしいです。 # 個人的には iso2022-jp か euc が良いんですけど。 # とにかく、チャンネルの founder は別の方なので、 # その方の主義にあわせることになりました。 |
どうも、skel.103Mです。 Bourne SHELLに関するアドバイス、どうもありがとうございました。>68userさん・Yuukiさん さっそく、 Bourne Shell 自習テキスト http://www.tsden.org/takamiti/shText/index.html を見てみました。なかなかいいですね、このページ。ブックマークにも 登録しときましたし。このページを見ながら勉強していこうと思います。 > あと、UNIX USER 10月号 (最新号) に 20 ページ程度ですが、 > シェルスクリプト講座が載ってます。結構勉強になると思います。 私も買って少し読んでみました。いわゆるハンドブックとしてはちょっと 不適だと思いました。(←個人的な意見なので気にしないで下さい)ひと 通り文法を知った後で実践として使おうと考えています。 > ただ、sh スクリプトの決定版、というような本は知らないです。 > http://www.oreilly.co.jp/BOOK/bash2/contents.htm > ってのがありますが、読んだことはないです。 このWebページによると bash に関するもののようですね。 明日(っていうか2時間後)秋葉原へ行くので、そのときに見てみよう と思います。 > # 結局 bash と sh は別物だし…。 そうなんですよね。例の秀和システムの「bash Manual & Reference」でも 似たようなことを書いてました。もちろんスタイルは似ているんです けれど、やはり違いがあるらしいです。。。 それでは。 |
こんにちは。 68userさん、Ksh変数のご回答ありがとうございました。 しかし、私はまだ、初心者なので、ファイル経由で情報を渡すということがよく分かりません。 ^^^^^^^^^^^^^^^^^^^^^^ もう少し詳しく教えて頂けないでしょうか。 よろしくお願い致します。 |
こんばんは。 ここには初めててきました。 質問があるのですが、Cシェルで、 サーバー日付より2日前のファイルを削除するとかっていう ことはできるのでしょうか? 教えてください。 お願いします。 |
@ノヴァさん > 質問があるのですが、Cシェルで、 > サーバー日付より2日前のファイルを削除するとかっていう > ことはできるのでしょうか? 使っているシェルにかかわらず可能です。 findというコマンドを使えばいいです。「UNIXの部屋」からfindの概要 や使い方を見たあと、詳細を「man find」で調べればいいと思います。 ではでは。 |
@ノヴァさん > ファイル経由で情報を渡すということがよく分かりません その前に > script1 から script2 を呼んでいるのではなく、あるプロセスから > script1 を呼び、script1 の終了後に script2 を呼んでませんか? に対する回答はどうなっているのでしょうか? 引数で渡すとか、環境変数で渡すとか、ファイル経由で 渡すとか、パイプで渡すとか、やり方はいろいろありますが、 どういう呼び出し方をしていて、どれだけの量のどういう内容の データを script2 に渡したいかがわからないとなんとも言えません。 |
> @ノヴァさん じゃなくて、やすさんでした。 ところで、make world 中に 家の FreeBSD を ぐっちゃんぐっちゃんに壊してしまったので、もし週末 までに復旧できれば IRC に参加させていただきます。 # が、なかなかうまくいかず…。 |
教えていただきありがとうございました。 さっそく、色々やってみます。 |
はじめまして、もりやと申します 実は今、シェルスクリプト(でいいんですかね?DOSでいうBATファイルの ことです)でやろうとしていることがあるのですが、やり方が今ひとつ分 かりません。ファイルの複製を作るのですが、複製されるファイルの名前 には、別のテキストファイルのレコードの先頭の4バイトが付加され、そ のテキストファイルは何レコードあるか分かりません。レコードの数だけ 複製を作ります。awkなど使えばよさそうに思って本を読んだりいろいろ試 しましたが、うまくいきません。教えていただければ幸いです。 OSは、HP-UXでバージョンの見方がわからないのですが、ここ2、3年のも のではあると思います。 |
はじめまして。 MXレコードを調べたいと思っているんですが、モジュールが使える状況にありません。Net::DNSなどのモジュールを使わずにMXレコードを引く方法があればヒントだけでも教えていただけるとうれしいです。 よろしくお願いします。 |
Hmm... I have recovery FreeBSD. But canna server doesn't accept a connection. Something is wrong. sign.... @moriya I can't understand what you want to say. Please show examples of the file and the record. To know OS version, type `uname -a'. @Q > get MX record without Net::DNS There is a sample script to get MX with nslookup. http://X68000.startshop.co.jp/~68user/cgi-bin/view-script.cgi/expn.cgi Another way, connect DNS server (port 53/udp), talk DNS protocol. # I hate multipost. You have to reply in 2ch, don't you? |
説明不足で申し訳ありませんでした。 org.datというファイルがあるとします あと、tencd.txtというテキストファイルがあり、その中身は 000420000101 002320001010 034320001020 とします この場合、 org.datをコピーしてorg004.dat、org0023.dat、org0343.dat という3つの複製ファイルを作成したいのです。 tencd.txtは何レコードあるかは不定です。 因みにHP-UXのバージョンはB.10.20でした。 よろしくお願いします |
What do you mean? hahaha... |
sh なら exec < tencd.txt while read line do set -- $line num=`echo $line | sed 's/^\(....\).*/\1/'` cp org.dat org$num.dat done csh なら foreach line (`cat tencd.txt`) set num=`echo $line | cut -c-4` cp org.dat org$num.dat end てな感じでしょうか。 # シェルスクリプトと言っても、シェルにはいろいろ種類が # あるので、sh か csh かそれ以外かを明記してください。 先頭4バイト取得には、sed でも cut でも awk でも お好きな方法をどうぞ。 もちろん全体を awk スクリプトで書くこともできます。 でもまぁ、perl を覚えた方がよいとは思いますね。 |
すいません、Perl一般の話ですいませんが、 サブルーチン リファレンスを使うとコールバック関数が作れる、 という場合の、コールバック関数ってどんなもんなんでしょうか? どんなときにどう使うと便利なんでしょうか? リファレンスの勉強をしていて、そこだけピンと来る例題のある章が なくて困っています。 御無理のない範囲で教えてくださいー。 |
Perl/Tk で何かアクションがあったときの動作を記述する関数 sub pushed { print "ボタンが押されました\n"; } $top->Button( -text => 'Push me', -command => \&pushed, )->pack(-side => 'left'); とか、シグナルハンドラ、たとえば SIGALRM による タイムアウトが起こったときの動作を記述する関数 sub signal_handler { print "1秒待ちましたが、入力がありませんでした\n"; alarm(1); } $SIG{ALRM}=\&signal_handler; alarm(1); $buf = <STDIN>; などをコールバック関数といいます。 後者は、より実践的に書けば http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=889 てな感じです。 なお、関数へのリファレンスを使わず、$SIG{ALRM}=sub {...} などと 無名関数を使ってコールバックを設定することもできます。 |
ありがとうございます。このふたつの例はわかりました。 他に、ユーザープログラムが呼び出すサブルーチンを 「コールバック」と呼ぶことはないんでしょうか。 「コールバック」という言葉じたいの定義が本によってあやふやな気がして、、。 たびたび申し訳ありません、、。 |
> 「コールバック」という言葉じたいの > 定義が本によってあやふやな気がして、、。 その本の記述例を見せていただけますか? |
すいません、、。 −−−−−−−−−−−−−−− 「Perl 5 パワフルテクニック大全集」(インプレス) 、、コード参照は、おもに、コールバック関数(後で呼び出してもらう関数)を指定するときに使う。、、 #! /usr/local/bin/perl # コールバック関数の定義 sub callback { my $mesg = shift; print "$mesg\n"; } # 関数への参照を作成 my $coderef = \&callback; # 異なるパラメータで関数を呼び出す &$coderef("Hi Mike!"); &$coderef("How are you?"); −−−−−−−−−−−−−−−−−−−− 「Perl 5 マスターブック」(翔泳社) サブルーチン関数の一般的な用途としてはコールバック関数があります。コールバック関数では、サブルーチンの配列をテーブル内に作成し、Perl プログラムから1つまたは複数呼び出します。、、 sub central_greeting { print "Hello!"; } sub eastern_greeting { print "Yo!"; } sub western_greeting { print "Howdy!"; } %greetings = ( "Central" => central_greeting, "Eastern" => eastern_greeting, "Western" => western_greeting, ) (中略、どこの土地のひとかを $where に入れて) $hash_ref = \%greetings; $sub_ref = $hash_ref=>($where); &$sub_ref(); −−−−−−−−−−−−−−−−−−−− 「実用Perlプログラミング」(オライリー) コールバック関数とは、リファレンスとしてあちこちに渡され必要に応じて呼び出されるようなサブルーチンです。そうしたものが構文的に用意されているわけではなく、使い方としての名称に過ぎません。呼び出す(リファレンスを使用する)側のコードでは、そのサブルーチンが何をするものかを意識する必要はありません。本節では、ディスパッチテーブル、シグナルハンドラ、描画関数の3つの例を通して、コールバック関数の使い方を説明します。 −−−−−−−−−−−−−−−−−−−− うーん、用例にしても呼び出しのレベルがいたずらに増えてるだけで、いまいち便利になった実感が。 |
こんにちは。 @ふくしさん ぼくの少ない経験でしか言えませんが、 今までぼくは「コールバック関数」(もしくはハンドラ)の名称は、 「何らかのアクションを要求した際に呼び出される関数」 に対して使ってきました。 #ボタン押下のイベントに対して呼び出されるモノであったり #シグナルイベントに対して呼び出されるモノであったり ふくしさんが例に出されている、それぞれの本では、 >「実用Perlプログラミング」(オライリー) の説明がほぼ的確だと思います。 >「Perl 5 パワフルテクニック大全集」(インプレス) や >「Perl 5 マスターブック」(翔泳社) の説明は、これらの部分だけを見ると コールバック関数と呼ぶのはおかしいような気はしますね。 どちらかと言うと、コールバック関数として使う際に便利に呼び出せるように 準備をしているところに見えます。 あくまでもそれぞれ、コード参照とサブルーチンの説明なのではないでしょうか。 |
全くもって同感です<hsj さん > 「何らかのアクションを要求した際に呼び出される関数」 あと、このアクションは「非同期に発生する」というのも 重要な要素なのかな? (違うかも) |
なるほどー(知恵熱) ひとつわからないのが、Tkやシグナルハンドラのように、 そのアクションをキャッチする機構がシステムによって用意されているもの (BASICのON命令みたいなもんですね) だけをコールバックと呼ぶんでしょうか? それとも、呼び出し元も自前のPerlコードで書いた例がなにかあるでしょうか? あと非同期ってどういう意味なんでしょう。 あとなんでコールバック(電話を掛けなおすこと)っていうんでしょね。 すいませんずうずうしくお伺いして、、。 |
ん〜、こういうのは自分の中で納得できるかどうかなので、 うまく説明するのは僕には難しいなぁ。 > あと非同期ってどういう意味なんでしょう。 プログラム側から「いつそのアクションが起きるか」を 知ることができないということです。たとえば、マウスの クリックがいつ発生するだとか、シグナルがいつ飛んで くるかを、プログラムの側から予想することはできません。 > Tkやシグナルハンドラのように、そのアクションをキャッチする機構が > システムによって用意されているものだけをコールバックと呼ぶんで > しょうか? そうだと思います。というより、システム (OS) の手助けを 借りなければ、非同期なアクションに応答することはできません。 signal は非同期でやってきますので、シグナルハンドラという 機構が OS にあります。 ボタンの押下は、結局は X Window System のイベントとして socket 経由でデータが送られてきます。これは select で データが送られてきているかどうかを調べます (たぶん)。 結局どちらも OS の手助けを借りている (=システムコール を使う) わけです。 |
にゃるほどー、わかりました。 非同期というのがユーザープログラムでわからない、 システムがキャッチする、 それを処理するのがコールバック、というのであれば納得できます。 あとはシグナルハンドラやTkのプログラムを勉強するなかで 勉強しようと思います。 どうもありがとうございます!>68userさん、hsjさん |
FreeBSDでネットワークプログラミング(カーネル)を しているのですが、たくさんの構造体が でてきてすこし混乱しています。 わかりそうでわからないので 構造体を日本語で具体的に説明しているHP、本などを 知っている方がいらっしゃいましたら どうか教えてください。HPの方がありがたいです。 乱文ですが、よろしくお願いします。 |
はじめまして、UNIX見習いです。 今まではke◯t氏の有名な掲示板や、ゆいチャ◯トのソース等を参考に Perlの勉強をしていましたが、68userさんのスクリプトを見て 目からウロコが落ちた感じでした。 変数のネーミングセンスも良く、可読性も高いスクリプトを初めて見て、 今まで参考にしていた人のスクリプトって何だったんだろうと思っちゃいました。 あと、Perlでネットワークプログラミングが出来るとは知らなかったし(爆) さっそくechoサーバのサンプルスクリプトを使わせてもらって勉強していますが、 IO::Socketを使ったechoサーバの場合、外部からのアクセスが出来なくて悩んでいます。 現在の状況は、 echo-server.pl・echo-server-fork.pl・echo-server-select.pl は外部からのアクセスでも動きますが、 IO::Socketを使ったechoサーバのサンプルスクリプトは全部 外部からのアクセスには反応しません。localhostからだと、ちゃんと機能するのですが…。 サーバの環境は、Perl 5.005_03 on Linux2.2.14で、 echoサーバのサンプルスクリプトは全てデフォルトのまま設置です。 IO::Socketを使った場合、なぜ外部からのアクセスが出来ないのか 原因が分からずに悩んでいます。 あと、標準モジュールの使い方の学習で効果的なリソースって何でしょうか? 私の手持ちの書籍では、標準モジュールの利用に関して載っていないので 何かオススメの書籍、もしくはネット上のリソースで参考になるところがあれば 紹介していただきたいと思います。なるべく日本語のリソースで(←贅沢かな?) 長々と書いちゃってすみませんが、ご指導の程、よろしくお願いいたします。 |
こんどは canna が かんじに へんかんしてくれなくなりました。やれやれ、 こどもみたいな ぶんしょうだ。 > IO::Socketを使ったechoサーバのサンプルスクリプトは全部 > 外部からのアクセスには反応しません。 おお、ほんとだ。というわけで しらべてみたところ、 LocalAddr => 'localhost', がわるいです。 ふつう、マシンには じぶんじしんあてへのインタフェイスがあります。 これをループバックとよび、127.0.0.1 という IP アドレスがふられて います (127.0.0.1 がループバックという きまりはありません。 (IPv4 では) ただのかんれいです)。 そして、インターネットにつながっているならば、さらにインターネットへ つながるインタフェイスがあります。これには 210.249.139.22 のような グローバル IP アドレスがふられています。 つまり、つうじょう、マシンには 2つのインタフェイス/IP アドレスが あるわけです。 たいていのサーバプログラムは2つのインタフェイスを くべつしません。 しかし、くべつできるような しくみは いちおうあります。それが http://X68000.startshop.co.jp/~68user/net/func.html#bind のさいごにかいてある、bind でどちらの IP あどれすをつかうかを えらべる、ということです。 で、LocalAddr => 'localhost' は、この bind のひきすうに IP アドレス (localhost にたいおうする 127.0.0.1) を あたえたのと おなじいみです。 これは LocalAddr をしていするときと しないときで、それぞれ netstat -an をじっこうすると わかりやすいでしょう。 tcp 0 0 127.0.0.1.5000 *.* LISTEN (LocalAddr してい) tcp 0 0 *.5000 *.* LISTEN (LocalAddr していない) と、LocalAddr をつけると、127.0.0.1:5000 しか みていないのが わかります。だからローカルホストからしか せつぞくできなかったわけです。 > 今まではke◯t氏の有名な掲示板や、ゆいチャ◯トの > ソース等を参考にPerlの勉強をしていましたが、 ゆいチャットはしりませんが、kent とか rescue などと くらべられるのは しんがいです :-) まぁ、こっちもそんなにレベルが たかいわけではないので (こんかいの ようなミスもあるし)、これいじょうは えらいひとからの つっこみが こわいので いいません。 ちなみに perl って、しょしんしゃでも なんとか うごかせるから でしょうか、うそだらけのページがおおいですね。ぼくがぜんめんてきに しんらいしているサイトは http://www.context.co.jp/perlnews/ http://www.din.or.jp/~ohzaki/perl.htm の2つだけです。 > あと、標準モジュールの使い方の学習で効果的な > リソースって何でしょうか? perl モジュールガイドとかいうほんが しゅっぱんされていません でしたっけ? しょうさいは わかりませんが。 ただ、もくてきのモジュールがわかっているならば、perldoc を ながしよみして、けっこうなんとかなるかとおもいます。 よみにくいぶんしょうで しつれいしました。LocalAddr の ぶぶんは、じかいこうしんじに さくじょいたします。 @yuji さん カーネルの TCP/IP まわりのこうぞうたいのことですよね? ぼくもしりたいです。だれかおしえて。 |
そうなんですよ。なかなかネットワークの構造体について わかりやすい説明って詳しいないんですよね。 特にFreeBSDの場合は・・・ 誰か知っていたら教えてください。 |
残念ながら、僕は知らないです。僕の持っている UNIX カーネル 関連の書籍にも、TCP/IP は載ってませんでした。 BSD Magazine No.4 に、IP の話が少し載ってますが、 構造体の説明はありません。 というわけで、解説書いて(笑)>yuji さん |
そうですね。つくってみますか! っていってもなかなか・・・ 理解した分だけ作っていくのは いいかもしれません。あとあと 役に立ちますし。 ええ、BSD Magazine No.4 に書いてありましたね。 どのような流れでデータが動いているのかは 理解するのに役に立ったと思います。 |
LocalAddr => 'localhost'を削除したら、外部からのアクセスに反応することを こちらでも確認できました。 #しかし普段からLinux使ってるのにnetstatしなかった私って…ごめんなさい(汗) それから、Perldocというものが自分のマシンに入っていることも実は知りませんでした。 昨日からネット上で検索かけまくって、やっとPerldocの存在を知りました。 さっそくperldoc -m IO::Socketして読んでみます。 68userさん、早急な解答ありがとうございました。 |
はじめてここに書きこみさせていたただきます よろしくお願いします。 今メーリングリストを開設しようと思っています サーバーはLinuxで aliasesファイルに転送先のメンバーリストファイルを指定したのですが 開かず、悩んでいます ----- The following addresses had permanent fatal errors ----- <aki@my-member.com> :include: /home/sites/www.my-recruit.com/web/recruit/bin/Mailing-list/mylist-member-list (expanded from: <aki@my-member.com> ) ----- Transcript of session follows ----- 550 :include: /home/sites/www.my-recruit.com/web/recruit/bin/Mailing-list/mylist-member-list... Cannot open /home/sites/www.my-recruit.com/web/recruit/bin/Mailing-list/mylist-member-list: Group writable directory 554 <aki@my-member.com> ... aliasing/forwarding loop broken -------------------------------------------------------------------------------- のようなメッセージが帰ってきます。 ファイルのパーミッションは644です すでに1週間と一日・・・私くじけそうです・・・ もしわからる方いらっしゃいましたらお願いします。 |
> Group writable directory グループが書き込めるディレクトリ、だから危険なので 実行するのはや〜めた、と言ってます。 |
68userさんありがとうございます パーミッションをいろいろ試したのですが・・・開きません ファイルやディレクトリのパーミッションを もしよろしければ、どうすればファイルを開いてくれるのか教えてください よろしくお願いします・・・ |
すみません、私のミスでした・・・ ディレクトリのひとつのパーミッションがおかしかっただけです う〜んこんなこと気づかないなんて・・・ ありがとうございました〜 |
質問させてください。 perlで、ログをファイルではなくDBMで管理するBBSを作っています。 ところが、プロセス間でDBMの排他制御を行う方法が分かりません。 もし知っていたらご教授ください。 おねがいします。 |
申し訳ございません もう一度同じような質問させてください メーリングリストを作っていまして パイプを通してプログラムに渡したのですが ----- Transcript of session follows ----- sh: mysite-filter not available for sendmail programs 554 | "/usr/local/lib/mailing-list/mysite-filter"... Service unavailable のようなメッセージがきまして メールがプログラムに渡っていません・・・ この場合、どのようなミスが考えられるのでしょう? 多分初歩的なミスだと思いますが よろしくお願いします・・・ |
はじめまして。 perlでradiusの認証クライアントを作成したいのですが、 perlのモジュールでAuthin::radiusというものがあって、 それを使用して作成したのですが、二重ログインしようとしてしまい、 二重ログインは不可の設定にしていますので、ログインできません。 と言う経緯で、1から作成しようと思います。 Sokcetのモジュールで、ポートを指定して、 ソケットを生成するのは一緒だと思うのですが、 radiusサーバに送るリクエストをどのように記述していいのかがわかりません。 radius サーバはDTC Radius Ver 2.03です。 どなたかご存じの方は教えていただけないでしょうか。 よろしくお願い致します。 |
ミワと申します。 シグナルについて質問させてください。 レンタルサーバーなどでは、スクリプトが一定時間動き続けていると、 TERMシグナル?が飛んでくるよ と聞いたことがあるんですが (クライアントがブラウザを閉じたり、中止をしたときも) 私が使っているサーバーで実験してみたんですが 全く飛んできませんでした。 無限ループとかになってしまった場合どうするのか など心配になってきたんですが(telnetでkillすればいいんですが)、 これはサーバー側の設定がなにかあるんでしょうか? #環境は Cobalt Linux & Apache です。 お分かりになる方、ご教授お願いします。 #実験で使ったPerlスクリプトはここにあります。 http://www.offside.ne.jp/~icon_store/sig/signal.txt |
TCP/IPの構造体についてなら http://www.kurasc.kyoto-u.ac.jp/plasma-group/data/misc/doc/koala にて概要はつかめるのではないでしょうか。 ただ,話がUNIXよりなのは fj.lecture だからかしらん。 |
@aki さん > sh: mysite-filter not available for sendmail programs /etc/sendmail.cf に P=/foo/bar/smrsh という部分がある なら、P=/bin/sh として、sendmail を再起動してください。 それでもダメならわかりません。 もしうまくいったなら、see smrsh(8)。smrsh を使い続けるならば、 /usr/libexec/sm.bin/ 以下にコマンドを置くべきでしょう。 @ノリスケさん > ところが、プロセス間でDBMの排他制御を行う方法が分かりません。 おそらく DBM には排他の仕組みはないと思います。flock/symlink/mkdir などを使って、自前でロックするしかないと思います。 @tam さん > perlでradiusの認証クライアントを作成したいのですが、 これはさっぱりわかりません。radius 自体あまり理解していないので…。 @の さん > http://www.kurasc.kyoto-u.ac.jp/plasma-group/data/misc/doc/ko じゃなくて、カーネルソースを読む際に参考になるドキュメントは ないだろうか、という意味じゃないでしょうか。 @ミワさん > シグナルについて質問させてください これは後ほど。というか、忘れちゃったので実験しないと。 # 時間がないなぁ… なお、apache では httpd.conf で、Timeout 300 などと 設定されています。 |
ご教授ありがとうございます。 >なお、apache では httpd.conf で、Timeout 300 などと >設定されています。 サーバー管理者に”TELL”シグナルを送って確認したところ デフォルトのまま触ってないので、Timeout 300 になってるっス という返答が帰ってきました。 なぜでしょう?? 何かほかの部分がマズいのでしょうか? よろしければ、ご教授お願いします。 |
基本的に、ブラウザを中断しても SIGTERM は飛んできません。 が、子プロセスがいる場合などに飛んでくる場合もあります。 前に調べたときはたしかそういう結論になったような覚えがあります。 # つまりよくわからなかったということ。 |
68userさんありがとうございました /usr/adm/sm.bin/ に置いたらできるようになりました! また何かあったらよろしくお願いします。 |
@tamさん RADIUSはRFCで規定されていたはずなので 認証パケットのフォーマットやプロトコルの詳細はそれを見ればわかると思います。 #ぼくはつくったことはありません アクセスサーバとの連携が必要だと思うので、ちょっとばかりめんどくさい事に なりそうですが・・・。 @ミワさん ぼくも詳しくないのですがアレですが、 Apache1.3.12のソースをナナメ読みした限りでは、 タイムアウト後にSIGTERMとSIGKILLが飛んでくるように なっているようにみえました。 で、FreeBSD4.0-RELEASE + Apache_1.3.12で実験してみたところ、 その通りに動作しているようにみえます。 #ちなみに、SIGKILLはトラップできないのが正しい動作ですね もしかしてですが、ログをつくるディレクトリの 書き込み権限が落ちてるとかはないですか? |
@68user さん 68user さん、hsj さん、ご教授ありがとうございます。 >基本的に、ブラウザを中断しても SIGTERM は飛んできません。 >が、子プロセスがいる場合などに飛んでくる場合もあります。 >前に調べたときはたしかそういう結論になったような覚えがあります。 ># つまりよくわからなかったということ。 なるほど。そうなんですか。 前に見た情報は間違っていた可能性がたかそうですね。 >もしかしてですが、ログをつくるディレクトリの >書き込み権限が落ちてるとかはないですか? それはlogディレクトリのことでしょうか? 私が使っているサーバーは、自分のアカウントで入ると 最初の階層にはwebというディレクトリしかないんです。 (web内はweb領域になってます) なので、エラーログなど見たことがないんですよ。 これっておかしいですよね。 logディレクトリを作れば、その中にエラーログやアクセスログが書き込まれて 今回の問題も解決するものなのでしょうか? (.htaccessなどで設定する?) |
@ミワさん >それはlogディレクトリのことでしょうか? いえ、そうではなくてsignal.logが書き込まれるディレクトリです。 web(nobody?)権限での書き込みができなければ動きませんよね。 ・・・が、よく考えると >全く飛んできませんでした。 とおっしゃってますし、とくにエラーになるとも書かれてませんね・・・。 と言うわけで、コレはハズしてそうです。 かき混ぜてスミマセン。 >これっておかしいですよね。 それは、ftpdがchrootされてるのでしょう。 セキュリティの確保が目的だと思います。 #CGIが使えるんだから、あまり意味が無いと言えば無いのですが(笑 |
@hsj さん >>全く飛んできませんでした。 >とおっしゃってますし、とくにエラーになるとも書かれてませんね・・・。 エラーにはなってないと思うんですが、ちょっと自信がないです。 >それは、ftpdがchrootされてるのでしょう。 >セキュリティの確保が目的だと思います。 なるほど、セキュリティの為に意図的に設定してあるんですね。 もしかして KeepAlive は関係しているのでしょうか? http://japache.infoscience.co.jp/japanese_1_3/manual/keepalive.html KeepAliveがoffに設定してあると、KeepAliveTimeoutが適応されて Timeoutに移行する という解釈でいいのでしょうか? #はずしてそうですが... |
@aki さん > /usr/adm/sm.bin/ に置いたらできるようになりました! で終わってしまうと、スキルアップにつながらないので、 僕がどうやって調べたかってのを書いておきます。 パーミッションを落としたりして適当にいろいろ試してみるが、 FreeBSD 4.0-RELEASE では同じエラーを出せない。 というわけで、sendmail のソースを探す % locate /sendmail/ どうやら /usr/src/contrib/sendmail らしい。 % cd /usr/src/contrib/sendmail ソースから available for sendmail という文章を探す % grep "available for sendmail" */* smrsh/smrsh.c: fprintf(stderr, "%s: %s not available for sendmail programs\n", smrsh って何? コマンドのようだが… % man smrsh 「smrsh - sendmail用に制限されたシェル」だそうな。特定の ディレクトリに置いてあるプログラムしか、~/.forward や /etc/aliases から呼び出せないらしい。 sendmail.cf から sh か smrsh を探す % egrep '/bin/(sh|smrsh)' /etc/mail/sendmail.cf Mprog, P=/bin/sh, F=lsDFMoqeu9, S=10/30, R=20/40, D=$z:/, なるほど。FreeBSD のデフォルトでは /bin/sh を使っているので 同じエラーは出ないわけね。 あと、最初に質問した掲示板に、解決したことを書き込んでおく べきでしょう。 |
はじめまして。 よろしくお願いします。 wwwboard.cgiを拝見して、これは...! と思っていただきました。 些末なことなのですが、自分の間借のWebスペースにテスト設置してみて 気付いたことを報告します。 コメントアウトしてスクリプトのご説明をされている部分で、 ディレクトリ配置のご説明でlockとされているディレクトリ名が my変数の定義ではlockdirとなっていました。ありがたいことに 細かく動作チェックできるのですぐに修正できましたが、為念。 --- wwwboard.cgi設置に際して、自分の方に別の問題があります。 こちらでお聞きしていいものかどうか判断せずに書き込みしていますので、 不適当であれば無視してください。 問題 スクリプトの実行権限の種別が、所有者権限(個人のアカウント名)、 nobody権限のいずれでもなくwwwの権限となる。 書き込みはできるが、生成されるログのOwnerがwwwとなり、 ぼくのアカウントではログの削除ができなくなる (^^; ぼくの方の環境 (ISPにWebページ用の領域を間借している形態です) ・WebサーバのOS : RS/6000 ・CGI設置場所の制限 : 個人のhomeディレクトリ以下であればどこでも可 ・wwwboard.cgiで使用するコマンドのうちnamazuとmd5が使用不可 動作チェックの出力の結果 http://www.ad.il24.net/~noiz/bbs/wwwboard.cgi?test |
フォローありがとうございます。 radiusのこともまだ知ったばかりですので、 知らないことがいっぱいです、もっと調べなければ... |
@noizさん はじめまして。 私も同じ掲示板を使っています。 削除に関しては、管理モードなどの追加(自作)をするのが 一番かも妥当なのかも知れません。 掲示板のログファイルの形式を見ていただくと、 一括方式にしろ分割方式にしろ、1件ごとの書き込みは わかりやすい形式で保存されていると思いますので、 単純なサブルーチンでもって管理可能なのではないかと思います。 # 本当はどうするのがいいですかね>68user |
ああ、僕を含めて 3人目のユーザを確認。ちゃんとサポートなんか してみたりして。 > スクリプトの実行権限の種別が、所有者権限(個人のアカウント名)、 > nobody権限のいずれでもなくwwwの権限となる。 www は nobody と同じようなものだと思ってください。そのサイト 全てのユーザの CGI が www 権限で動きますので、状況は nobody と 変わりません。 > 書き込みはできるが、生成されるログのOwnerがwwwとなり、 > ぼくのアカウントではログの削除ができなくなる (^^; ファイルの削除ができるかどうかは、ファイルのオーナーとは 関係ありません。そのファイルの置いてあるディレクトリに Write パーミッションがあるかどうかです。 現状では umask 002 としていますので、 separate_log/000/ (ディレクトリ) separate_log/000/00001 (ファイル) のパーミッションは、それぞれ 775,664 になるはずです。 で、OS が BSD 系ならば削除はできるはずです。なぜなら、 separate_log/ は owner:group が 68user:realuser で、パーミッションが 757 という状況で、ユーザ www が separate_log/000/ (ディレクトリ) separate_log/000/00001 (ファイル) を作ろうとすると、 separate_log/000/ は owner:group=www:realuser で、パーミッションが 775 separate_log/000/00001 は owner:group=www:realuser で、パーミッションが 664 となるはずです。親ディレクトリのグループを引き継いでいる ところがミソですね。 ところが、SysV 系では、作成したファイル・ディレクトリの グループは、ファイル・ディレクトリ作成者の実効 GID となるので、 仮に CGI の実行が uid:gid=www:www で行われるとしたら separate_log/000/ は owner:group=www:www で、パーミッションが 775 separate_log/000/00001 は owner:group=www:www で、パーミッションが 775 となり、separate_log/000/00001 は、CGI 経由でないと 消せなくなります。 # ここらへんの動作を決める要素は、他にも sgid bit があるけど、略。 # なお、Linux だと mount 時のオプションでどちらの挙動をするかを # 決められます。 というわけで、まずは削除ができるかどうか試してみてください。 RS/6000 の OS が BSD 系ならば消せるでしょう。 # でも多分 AIX だろうから、SysV だよなぁ…。しかし、RS/6000 を # 使っている ISPか。金持ちだ (いくらか知らんけど)。 > 削除に関しては、管理モードなどの追加(自作)をするのが > 一番かも妥当なのかも知れません。 へい、作りまっせ〜。何か要望があれば今のうちに言ってください。 数日経ってやる気が失せる前に (笑) > my変数の定義ではlockdirとなっていました こちらも直します。 |