>>4045 やまさん 正解は ethereal が教えてくれているはずですので、こういう質問は回答 する側としては非常につまらないのです。だから、質問する側も、もう ちょっと努力する姿勢を見せてください。 > 今度はcookieが無効であると言う画面がでました などというわけのわからんことを言っていないで、 「IE では〜というリクエストを送っているが、Java だと〜という リクエストを送信してしまう。IE と同じリクエストを送信するには どうしたらよいか」 くらいの質問にブレイクダウンしてください。リクエストとレスポンスを 見比べるだけの注意力があれば簡単なはずです。 あと、HTTP の基本的な知識があるのかないのかさっぱりわからないので、 http://x68000.q-e-d.net/~68user/net/ HTTP クライアントを作ってみよう(1)〜(4) を読んだ上で、telnet を使って接続してみてください。それに成功してから 初めて Java で実現するにはどうすればいいか、という話になるわけです。 一応ヒントだけは出しておきます。 - /config/verify に cookie なしでリクエストしているのは誰か? まだ 提示していないソースがあるのか? URLConnection クラスが自動的に 再接続しているのか? - URLConnection が自動的に再接続しているのであれば、 HttpURLConnection クラスを使って setInstanceFollowRedirects メソッドで再接続を抑止し、自前で cookie 付きで再接続してみては。 |
>>4046 68user > 一応ヒントだけは出しておきます。 試したわけではないので、ヒントが的確かどうかは知りません。念のため。 |
当分の間、本掲示板での UNIX・ネットワークに関する一般的な質問の受け付けを 中止します。理由は http://X68000.q-e-d.net/~68user/cgi-bin/wwwboard.cgi?howtouse さえ読まないマルチポスト馬鹿のせいで不愉快な思いをするのがアホらしくなった からです。UNIX・ネットワークに関する一般的な質問がなされた場合、その書き込みを 削除することがあります。 今後は当ページのコンテンツに対するご意見・ご指摘のみ受け付けます。 あと、雑談も OK です。 これまで回答してくださった方々、まともな質問者の方々には深く感謝 いたします。ありがとうございました。 |
>>4048 68user 懇切丁寧な回答、いままでどうもお疲れ様でした。 なんだかんだ結局見てるだけで力になれず、すんません。 ところで、コンテンツに関するご意見・ご指摘は歓迎とのことですし、このまま 何もやりとりが亡くなるのも寂しいので、ちょっと一言。 「POP3クライアントを作ってみよう」で、APOPではサーバ側に生パスワードを 持っていないといけないという点でセキュリティ上イマイチである、と 書かれていますが、それではどんな方法だと納得できそうですか? (crypt等したパスワードを使うというイメージ or もっとよい案?) |
>>4038 68user 68userさんありがとうございます。返事が遅れてすみません。 実は『シグナルハンドラを戻すなどの対処』部分がよく分かりませんでした。 もしよろしければこの部分のコードを教えていただけないでしょうか? 本当は自分なりに勉強してこの部分のコードを書き、このサイトにアップしたいという気持ちはあるのですが、なにぶん初心者なもので。。。 実際のテストでうまくいっているということと、この例では子プロセスがSIGCHLDを受けることはないとのことですので、当面はとりあえず現在の位置で対応させていただきます。 もし『シグナルハンドラを戻すなどの対処』を私なりに見つけることができたら、本サイトで報告させていただきます。 上田 |
>>4049 has その文章を書いたのは 5〜6年前なのでもう忘れてしまいましたが、 改めて考えてみました。 まず、 - ファイルに生パスワードを保存しておくのはよいことではない というのは納得していただけるかと思われます。 もちろん、デメリットを上回るメリットがあれば生パスワードを保存 してもよいのでしょうが、APOP については特にメリットらしきものは 見当たりません。 また、管理面からいっても、UNIX のシャドウパスワードと別管理でも よい場合もあるでしょうし、別管理になっても構わない場合もあるでしょう。 しかし、APOP では別管理にせざるをえません (選択の余地がない)。 > それではどんな方法だと納得できそうですか? APOP はサーバがクライアントにタイムスタンプを通知する際、サーバが 保持しているパスワードが - 生パスワード - パスワードの MD5 値 - パスワードの SHA-* 値 のいずれであるかを通知する、というのがわたしの考えです。 そうすれば、クライアント側はそれに応じて入力されたパスワードをそのまま 送るか、MD5 値を送るかを決定できます。また、サーバ管理者の方針により、 生パスワードで管理することもできるし、シャドウパスワードと共用にする こともできます。 なお、この部分はどうも叩かれ所のようで、この APOP 批判の文章を読んで 「こいつはわかってない」と評価している人を掲示板などで見かけます (わたしは何がどうわかってないのかが理解できないので、何ともいえない のですが)。 >>4050 上田 > 実は『シグナルハンドラを戻すなどの対処』部分がよく分かりませんでした。 > もしよろしければこの部分のコードを教えていただけないでしょうか? $SIG{CHLD} = 'DEFAULT'; です。 |
>>4051 68user > 管理面からいっても、UNIX のシャドウパスワードと別管理でも > よい場合もあるでしょうし、別管理になっても構わない場合もあるでしょう。 > しかし、APOP では別管理にせざるをえません (選択の余地がない)。 そうですね。使う側がやりたいように出来るよう、自由度を持たせておくという 考え方のツールは多い気がしますし。 > サーバが保持しているパスワードが > - 生パスワード > - パスワードの MD5 値 > - パスワードの SHA-* 値 > のいずれであるかを通知する 同感です。 > なお、この部分はどうも叩かれ所のようで、この APOP 批判の文章を読んで > 「こいつはわかってない」と評価している人を掲示板などで見かけます そうなんですか。私にもよくわかっていないようなので誰かに教えて欲しいです。 RFC2195とかにはchallenge-response authentication protocolを使うと サーバにパスワードを*平文で保存せずに済む*とあるようです。 ひょっとしてパスワードとは別の、もっと重要なことが理解できてない ということなのかもしれないですね…。 |
>>4052 has > RFC2195とかにはchallenge-response authentication protocolを使うと > サーバにパスワードを*平文で保存せずに済む*とあるようです。 なるほど。 http://www.lins.jp/~obata/imap/rfc/rfc2195ja.html 鍵付き MD5 ダイジェストを利用し、サーバ上に平文で秘密鍵が保管 される必要はないので、RFC 1734 で規定される POP3 の使用のための APOP より改善されたものからなるともいえる。 ということで、APOP はイマイチと自信を持っていえるようになりました。 該当ページもそのうち加筆・修正しておきます。 ところで RFC 2195 は IMAP と POP に CRAM を導入しよう、というものですが、 IMAP では CRAM-MD5 や CRAM-SHA に対応した実装がいろいろありますけど、 POP の方は普及してるんですかねぇ。 http://risky.cs.inf.shizuoka.ac.jp/~ynoguchi/index.php?POP%20(%20courier-pop%20) には (courier-pop は) courier-imap と同様,CRAM-MD5, CRAM-SHA に対応可能 だが,結局,そのプロトコルに対応するクライアントがない とありますし。 |
>>4053 68user 更新しました。 http://x68000.q-e-d.net/~68user/net/pop3-3.html 「シャドウパスワードと共通化できない」という批判は、CRAM-MD5 でも 共通化できないような気がしたので (crypt には salt があるけど、 CRAM-MD5 にはないし、CRAM-MD5 には ipad とか opad とかがあるけど、 crypt にはないから)、とりあえず削除してあります。 |
>>4047 やまさん 68userさんお返事遅くなりました。四苦八苦しましたけど ヒントいただいた通りプログラムを組みなおしたところ、 無事ログインできました。ありがとうございました。 |
なんとなくアンケートをとってみることにしました。 http://X68000.q-e-d.net/~68user/tmp/questionnaire.cgi |
「UNIX の部屋」を更新しました。 http://X68000.q-e-d.net/~68user/unix/ |
http://x68000.q-e-d.net/~68user/unix/pickup?freebsd-update 注意点は以下の通り。とある文言の、 <li>freebsd-updateの<li>、 HTTP 経由でファイルを\取得するので、の\、 これらは、誤植でしょうか? でも、ソースを見ると<LI>と大文字で書かれてるし・・・ |
>>4058 へにか ありがとうございます。修正しました。 誤植って言いはると void 氏みたいなので、タイプミスということでひとつ。 |
>>4059 68user > 誤植って言いはると void 氏みたいなので、タイプミスということでひとつ。 了解しました。気になったので、検索かけたら・・・ 何て言っていいのやら。 |
日記。 % mkdir dir % touch dir/file % chmod 400 dir % ls -l dir としたとき、dir/file を stat(2) する権限がないわけなので、Permission denied となる (Linux・Solaris では実際にそうなる)。 # http://x68000.q-e-d.net/~68user/unix/pickup?chmod ところが FreeBSD では何も表示されず (エラーも出ず)、exit status も 0 で正常終了してしまっている。 これを調べようと、FreeBSD 5.2.1-RELEASE の ls ソースを見てみる。 # http://www.jp.freebsd.org/cgi/cvsweb.cgi/src/bin/ls/ ずっと ls ってのは opendir して readdir して stat するものだと信じていたが、 実際には fts(3) -- traverse a file hierarchy http://www.freebsd.org/cgi/man.cgi?query=fts&manpath=FreeBSD+5.3-RELEASE+and+Ports&format=html を使っていて、上記のシステムコールは間接的にしか使用していなかった。 >>3773 68user で買った本を読むと、しっかり書いてあった。 この人の書く文章にはおもしろみのかけらもなく なんて文句言う前に、ちゃんと目を通すべきということか (全然読んでなかった)。 fts(3) は 4.4BSD から実装され、GNU 方面では glibc2 で採用された。glibc の マニュアルには BSD 4.4. fts ユーティリティは、将来の St -p1003.1-88 リビジョンに 含まれると期待されている。 と威勢のいいことが書いてあるが、少なくとも Solaris9 には実装されていない。 はじめて fts(3) を使ってみる。以下のプログラムで、stat できない場合エラーと 判断できている。FreeBSD の ls にはそれっぽい箇所があるにはあるが、その処理が うまく機能していないのか、あるいは謎の仕様なのか…。 ----- #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fts.h> main(){ FTS *ftsp; char *path[2]={"dir", NULL}; ftsp = fts_open(path, FTS_PHYSICAL | FTS_NOCHDIR, NULL); if ( ftsp == NULL ){ perror("fts_open"); exit(1); } FTSENT *ftsentp; while (1){ ftsentp = fts_read(ftsp); if ( ftsentp == NULL ){ break; } struct stat *sp = ftsentp->fts_statp; printf("%c", sp->st_mode&S_IRUSR ? 'r' : '-'); printf("%c", sp->st_mode&S_IWUSR ? 'w' : '-'); printf("%c", sp->st_mode&S_IXUSR ? 'x' : '-'); printf("%c", sp->st_mode&S_IRGRP ? 'r' : '-'); printf("%c", sp->st_mode&S_IWGRP ? 'w' : '-'); printf("%c", sp->st_mode&S_IXGRP ? 'x' : '-'); printf("%c", sp->st_mode&S_IROTH ? 'r' : '-'); printf("%c", sp->st_mode&S_IWOTH ? 'w' : '-'); printf("%c", sp->st_mode&S_IXOTH ? 'x' : '-'); printf(" %d %s\n", sp->st_mode, ftsentp->fts_path); if ( ftsentp->fts_info == FTS_NS ){ perror("stat failed"); exit(1); } } exit(0); } ------ あと、 http://www.freebsd.org/cgi/man.cgi にて FreeBSD 5.3-RELEASE からは ports マニュアルも検索できるように なっていることに気づいた。これは大変素晴らしい。 |
>>4056 68user > なんとなくアンケートをとってみることにしました。 アンケートの受付を (11/27 の時点で) 終了しました。結果をお知らせします。 [質問] 68user's page で今後読みたいコンテンツがあれば選択してください (複数選択可)。 [選択肢] 1. UNIX コマンドのコンテンツ充実 2. UNIX howto (「〜するには?」集のようなもの) 3. UNIX インストール・サーバ構築 4. ネットワークプログラミングのコンテンツ充実 5. web と CGI についてのコンテンツ充実 (含 Java Servlet・EJB) 6. C 言語講座的なもの 7. 業務系システム構築講座 (設計・コーディング・DB) 8. プログラマや SE の仕事について思うことをつらつらと [結果] 回答総数 67 1. 36(17%) ************************************ 2. 42(20%) ****************************************** 3. 27(13%) *************************** 4. 29(14%) ***************************** 5. 13(06%) ************* 6. 14(06%) ************** 7. 18(08%) ****************** 8. 25(12%) ************************* [感想] 1・2 が多いのは予想していましたが、5・6 が少ないのは予想外でした。 5 は書きかけのコンテンツのまま放置してあるので、その辺の情報を今ほしい 人はここにはいないってことでしょうか。6 は世の中は意外と保守的で、仕事で いまだに C でごりごり書いている (書かされている) 人が多数いるに違いない と予想したのですが、はずれたようで。 あと、7 より 8 の方が多いのもちょっと不思議です。 頂いたコメントについてですが、 > div 開始タグより div 終了タグが圧倒的に多い とりあえず気づいたところは直しました。自分で確認して、あまりにも 閉じ側が多いので笑ってしまいました。 あと、 >>3951 ほんたか > 1.「h 1文字左に移動」がリストからはみ出ています。 も直しました。 アンケート結果は今後の参考にさせていただきます。ありがとうございました。 |
「ネットワークプログラミングの基礎知識」に HTTP クライアントを作ってみよう(5) - 認証編 - http://X68000.q-e-d.net/~68user/net/http-auth-1.html を追加しました。 |
こんにちは。 こちらのサイトに来るのは今日が初めてですが、内容が充実していて大変参考になるサイトですね。 今後も利用させて頂こうと思います。さっそくですが、xlibについて質問をさせてください。http://x68000.q-e-d.net/~68user/xprogram/xlib-1.html のxlib-1.c を cc -o xlib-1 xlib-1.c -I /usr/X11R6/include -lX11 -L /usr/X11R6/li のように実行したら、何にも出て来なかった。私が使っているのは red hat linux 8.0です。宜しくお願いします。 |
>>4064 sqh00 カレントディレクトリに xlib-1 というバイナリが生成されているか、 あるいは何かしらのエラーメッセージが出力されていると思いますので 確認してみてください。 |
カレントディレクトリに xlib-1 というバイナリが生成されているが、実行できない。このように、実行したら、何にも出て来なかった。 [root@dm1511 xlib]# xlib-1 bash: xlib-1: command not found |
>>4066 sqh00 カレントディレクトリにあるバイナリは % ./xlib-1 と実行してください (% はプロンプト)。 |
実行ができました。ありがとうございます。 |
「ネットワークプログラミングの基礎知識」に HTTP クライアントを作ってみよう(6) - Digest 認証編 - http://X68000.q-e-d.net/~68user/net/http-auth-2.html を追加しました。 ところで cnonce は選択平文攻撃への耐性を高める効果があるとかなんとか 知ったかぶって書いてしまいましたが、cnonce がないと具体的にどういう 攻撃ができるんでしょうかね。 差分解読法かなぁと思ったんですが、MD5 に差分解読法って有効なんでしょうか。 あるいは salt 的な意味合いがあるんでしょうか? いまいちイメージがわかない。 |
「ネットワークプログラミングの基礎知識」で勉強させていただいています。 kqueue の説明をみて早速いぢってみました。 サンプルでは kqueue() の戻り値に対して、終了時の処理が何もされていません。 man で調べたたところ、kqueue() の戻り値はファイルデスクリプタと記されています。 init kq = kqueue(); close(kq); としても、close の戻り値が -1 で閉じることができませんでした。 なので、 init kq = kqueue(); close(kq); init kq = kqueue(); close(kq); とすると、kq は 1 回目が 9、2 回目が 10 といったようにインクリメントされてしまいました。 fcntl で kq の情報を取得しようとしてもすべての戻り値は -1 でした。 なんとなく、ファイルデスクリプタとして扱えていないような気がします。 当方は Mac OS X 10.3.7(BSD 4.4 ベースの Darwin) です。 本当の BSD なら、close できるものなのでしょうか。 もし、kqueue の説明を追加する予定があるようでしたら、close または、それに代わる処理も追加してもらえると大変助かります。 |
>>4070 たなか > 本当の BSD なら、close できるものなのでしょうか。 FreeBSD 5.2-RELEASE では close(2) できました。ちなみに カーネルには queue 用を close するコードも含まれています。 詳しくないので事情はわかりませんが、Mac OS X (Darwin?) の 問題ではないかと思います。 > close または、それに代わる処理も追加してもらえると大変助かります。 echo サーバばかり作っていると終了処理がおろそかになっていけませんね。 「quit」を送ると終了するようにするなど、何かしら考えたいと思います。 |
>>4071 68user どうもありがとうございます。 >> 本当の BSD なら、close できるものなのでしょうか。 > FreeBSD 5.2-RELEASE では close(2) できました。ちなみに > カーネルには queue 用を close するコードも含まれています。 手元に BSD が動作するマシンがないので、実験できませんでした。 Darwin の問題ですね。Apple に連絡してみます。 下のコードを実行すると次のような結果となります。 kqueue : 3 close(3) : -1 close: Bad file descriptor kqueue : 4 close(4) : -1 close: Bad file descriptor ------------------------------------------------ #include <stdio.h> #include <sys/types.h> #include <sys/event.h> #include <sys/time.h> #include <unistd.h> int main() { int kq; int ret; kq = kqueue(); printf("kqueue : %d?n", kq); if (kq == -1) { perror("kqueue"); } else { ret = close(kq); printf("close(%d) : %d?n", kq, ret); if (ret == -1) { perror("close"); } } kq = kqueue(); printf("kqueue : %d?n", kq); if (kq == -1) { perror("kqueue"); } else { ret = close(kq); printf("close(%d) : %d?n", kq, ret); if (ret == -1) { perror("close"); } } return 0; } ------------------------------------------------ |
サーバがHP-UX11.00で、Bシェルでシェルを書いています。 シェル中で、「ls *.txt」を実行しています。 "*.txt"が存在しない場合、エラーが出力されるので、 「ls *t.xt > /dev/null 2>&1」で、エラーを出さないよう にしました。 そこで、lsの処理に"grep -v"を追加し、"*.txt"がない 状態にすると「*.txt がみつかりません。」がでます。 ls *t.xt | grep -v "kekka" > /dev/null 2>&1 エラーがでないようにするにはどうしたらよいのですか。 |
ここで質問する人のブラウザには、 「UNIX・ネットワークに関する一般的な質問は受け付けていません。」 という一文は映らないのだろうか? >>4073 さいさん 最終的にどうしたいのか良く判らないが、取りあえずはこれで。 ls *txt 2>/dev/null | grep -v "kekka" |
>>4074 zsh ありがとうございます。 実際にしたいことは、 シェルを実行した際、「*.txt がみつかりません。」を 標準出力したくないのと、戻り値の判定をしたいのです。 ls *.ldif | grep -v "kekka" > /dev/null 2>&1 if [ $? -ne 0 ] ; then echo "Text File Nothing Today" exit 0 fi |
>>4075 さいさん すみません。 間違いがありました。 実際にしたいことは、 シェルを実行した際、「*.txt がみつかりません。」を 標準出力したくないのと、戻り値の判定をしたいのです。 ls *.txt | grep -v "kekka" > /dev/null 2>&1 if [ $? -ne 0 ] ; then echo "Text File Nothing Today" exit 0 fi |
>>4076 さいさん 結果的にファイルの有無を確認したいんですよね? だとすれば、戻り値のチェックよりも下記のようにしては如何でしょうか? set -- `ls *txt 2>/dev/null | grep -v "kekka"` if [ $# -eq 0 ] ; then echo "no file." fi ※:シェルに引数を与えている場合等は考慮が必要です。 |
>>4077 zsh ありがとうございます。 set -- `ls *txt 2>/dev/null | grep -v "kekka"` の 「set -- `ls 」 の使い方教えてください。 どのような意味なのですか |
set -- で引数(定位置パラメタだっけ?)を書き換えることが出来ます。 今回の場合は、 ls *txt 2>/dev/null | grep -v "kekka" の出力で置き換える事になりますので、 $#で上記コマンドの結果出力されたファイル数を参照できます。 |
>>4079 zsh お礼遅くなって申し訳ありません。 ありがとうございます。 >set -- >で引数(定位置パラメタだっけ?)を書き換えることが出来ます。 参考本とかで調べてます。 |