|
質問させてください。 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 |