68user's page 掲示板

Prev< No. 4376〜4379> Next  [最新発言に戻る] [過去ログ一覧]
No. 4376 # DNS勉強中 2005/11/10 (木) 16:58:56
たびたびすいません。
No 4375のソースですが、
掲示板から直接クリックするとアップロードしたソースが見えないようなので、
ブラウザを新規に立ち上げてアドレス欄にコピーしてアクセスしていただけますでしょうか。

No. 4377 # Yuusuke 2005/11/10 (木) 18:07:20
テストサーバ:solaris8
本番サーバ :solaris8
ワークステーション間のファイル転送について質問です。
テストサーバで構築したディレクトリを本番サーバに移行しようとしています。
条件としてファイルのパーミッション、ユーザ.グループ、タイムスタンプは
変わらないようにします。
そのため
"tar cvf /tmp/system.tar ."
でアーカイブして"rcp"で本番サーバにアーカイブファイルを転送してファイルを
展開したのですがユーザ.グループが本番サーバのログインユーザのものになって
しまいました。
tarは既存の状態をそのままアーカイブすると思っていたのですがrcpで転送すると
変わってしまうのでしょうか?
よろしくお願いします。

No. 4378 # Yuusuke 2005/11/10 (木) 18:57:26
No.4377の質問をした者です。
本番サーバでアーカイブしたファイルを展開時に"root”ユーザで実行したところ
既存の環境のままで展開できました。
solarisでは["o"オーナーシップ]というオプションが"root"ユーザ以外のユーザが
アーカイブファイル展開時に付属するようでした。
おさわがせしましたm(__)m

No. 4379 # 68user 2005/11/10 (木) 20:19:47
>>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
すると、他ユーザが所有するファイルを作成できるかもしれません (試してません)。

Prev< No. 4376〜4379> Next  [最新発言に戻る] [過去ログ一覧]