|
~はunixではどのような存在なのですか? |
|
>>4368 68user >>4366 anonymous は解決したのですか? |
|
はじめまして。 学校の課題で、C言語でnslookupみたいな動作をするプログラムを作るように言われ こちらのサイトを参考に作成させていただいております。 それで一箇所気になったのですが、 http://x68000.q-e-d.net/~68user/net/resolver-3.htmlの > タイプが TXT なら、そのまま表示します。 > これは多分間違い。 > % ./resolver-1.pl www.jp.freebsd.org version.bind txt chaos > リソースデータは「&Sorry, no version string is available」と表示されるが、 > dig や nslookup は「Sorry, no version string is available」となります > (& がない)。 > 先頭の & を削るような規則があるようだが、それが何なのかはわからなかった。 の部分ですが、&の文字コードは0x26(10進数で言う38)。 そしてその後に続く 【Sorry, no version string is available.】 は38文字。 つまりドメイン名の3www8livedoor3com0と同じような意味かなと思います。 そのため先頭の1バイト目を出力しないようにすればdigやnslookupと同じような 表記になるのではと思います。 例) sega.jpを調べるとunknownが帰ってきますが、その中身は 【07 75 6e 6b 6e 6f 77 6e】です。 文字数が32文字以上ないと画面上には何も表示されないので、 それ以下の文字数のところでは結果的にうまく出力されているのかなと思います。 そのため【タイプが TXT なら、そのまま表示します。】ではなく、 【タイプが TXT なら、先頭1バイト以外をそのまま表示します。】かなと思います。 ぜんぜん的外れな事言っていたらすいません。 |
|
こちらのサイトを参考にresolver-1.plと似たような動作をする C言語のプログラムを作成したのですが、一箇所分からないところがあったので、 もしお分かりになるようでしたらアドバイスをいただけないでしょうか。 作成ソース(一応問題なく動くと思います) windows版(CPad 2.31使用) http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1052.txt linux版(gcc 2.96使用) http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1053.txt それで、分からないのは【DNS query 送信時にごみデータが後ろに大量に付く】事です。 ごみが付いてしまう理由は、 DNS query の質問レコードの照会名(可変長)の長さは 実際に名前解決ホスト名を入力されないと分からないので、 char QUERIES[400];と宣言し、そこに名前解決ホスト名を格納しているからです。 そして、その後ろに、タイプとクラスを連結しています。 そのためQUERIES[400]の余った部分がごみデータとなってしまいます。 実際の動作には問題が無いみたいで、 パケットをキャプチャしなければごみが付いているのは分からないのですが、 気持ち悪いので改善したいと思っております。 アドバイスをいただけるようでしたら、どうかよろしくお願いします。 |
|
たびたびすいません。 No 4375のソースですが、 掲示板から直接クリックするとアップロードしたソースが見えないようなので、 ブラウザを新規に立ち上げてアドレス欄にコピーしてアクセスしていただけますでしょうか。 |
|
テストサーバ:solaris8 本番サーバ :solaris8 ワークステーション間のファイル転送について質問です。 テストサーバで構築したディレクトリを本番サーバに移行しようとしています。 条件としてファイルのパーミッション、ユーザ.グループ、タイムスタンプは 変わらないようにします。 そのため "tar cvf /tmp/system.tar ." でアーカイブして"rcp"で本番サーバにアーカイブファイルを転送してファイルを 展開したのですがユーザ.グループが本番サーバのログインユーザのものになって しまいました。 tarは既存の状態をそのままアーカイブすると思っていたのですがrcpで転送すると 変わってしまうのでしょうか? よろしくお願いします。 |
|
No.4377の質問をした者です。 本番サーバでアーカイブしたファイルを展開時に"root”ユーザで実行したところ 既存の環境のままで展開できました。 solarisでは["o"オーナーシップ]というオプションが"root"ユーザ以外のユーザが アーカイブファイル展開時に付属するようでした。 おさわがせしましたm(__)m |
|
>>4374 DNS勉強中 ありがとうございます。 以前も length では、というご指摘をいただいたのですが、RFC などの 一次資料を見つけられずにいます。 http://x68000.q-e-d.net/~68user/cgi-bin/wwwboard.cgi?log=4283 http://x68000.q-e-d.net/~68user/cgi-bin/wwwboard.cgi?log=4293 この件に関する一次資料をご存知でしょうか? >>4375 DNS勉強中 > 分からないのは【DNS query 送信時にごみデータが後ろに大量に付く】事です。 > sendto(s, (const char *)&DNS_Send, sizeof(DNS_Send), 0, (struct sockaddr *)&server, sizeof(server)) < 0) { sizeof(DNS_Send) バイトを送信しているのがまずいので、必要なバイト数分だけ 送信すればよいと思います。この例なら送信バイト数は (DNS_Send.QUERIES - &DNS_Send.id + count + 4) バイト ですかね? (自信なし) まぁこれだと汚いので、質問数や長さを保持する変数を 追加した方がよいと思います。 あとは struct DNS_Packet のパディングが心配です (実際は id や flag は short なのでほとんどの環境では問題ないと思いますが)。わたしなら struct DNS_Query { .... }; struct DNS_Question { short id short flag; short QDCOUNT; short ANCOUNT; short NSCOUNT; short ARCOUNT; struct DNS_Query *q; }; struct DNS_Packet { char data[1000]; int length; }; として (命名は適当)、問い合わせ内容を DNS_Question に構築し、送信時に DNS_Packet にコピーして send すると思います。といっても、わたしのソースの方 では全く実践できていないですけれども。 ところで、全体的にはかなり読みやすいと思うんですが、このソースのライセンスを 教えてください。要は、これを修正したものを、わたしのページに C のサンプル コードとして記載することは可能でしょうか? ということです。 >>4378 Yuusuke 一般ユーザで展開したときに他ユーザの所有者でファイルを作成できてしまうと、 適当な tar ファイルをでっちあげれば他のユーザのファイルを自由に作成できる ことになってしまうので、普通の UNIX ではできません。 root で展開するのもひとつの方法ですが、Solaris では /etc/system で rstchown=0 と設定することで一般ユーザが chown できるようになります (セキュリティを 犠牲にするので、わたしはしません)。そうしておけば、一般ユーザが tar xfp すると、他ユーザが所有するファイルを作成できるかもしれません (試してません)。 |