68user's page 掲示板

Prev< No. 481〜581> Next  [最新発言に戻る] [過去ログ一覧]
No. 481 # mm 1999/10/20 (水) 23:02
ご無沙汰してます。
apache の .htaccess のネットマスクについて教えて頂けないでしょうか?

ネットマスクがマスクする部分(ビットが0の部分、または、より右側のビット)
に対応するIPアドレスのビットは、0にするのか1にするのかということ
なのです。

例えば、133.205.78.73〜133.205.78.79 のホストのアクセスを禁止する場合、
(なお、2進と10進は以下の通りです。
        01001 001b = 73d
        01001 111b = 79d
        11111 000b = 248d )

<Limit GET POST>
order allow,deny
allow from all
deny from host
</Limit>

の host の指定方法なんですが、
133.205.78.72/255.255.255.248 又は 133.205.78.72/29
とすべきなのか、それとも
133.205.78.79/255.255.255.248 又は 133.205.78.79/29
なのでしょうか?

http://japache.infoscience.co.jp/japanese_1_3/manual/mod/mod_access.html
には、
> (すなわち 10.1.0.0/16 は 10.1.0.0/255.255.0.0と同じです)
とあるんで、この例では、マスクされるビットが全部0になってますよね
(10.1.0.0の最後の2バイト)。
でも、バイト単位でない場合には、マスクされるビットを全部1にしてる
例もみたものですから↓
http://www.med.teikyo-u.ac.jp/~morikawa/howto/access.html

>allow from 202.253.111.0/255.255.252.0 あるいは 202.253.111.0/22
では、111d = 01101111b ですからマスクされるビットは1になってます。
それとも、バイト単位の指定の場合だけ0にしてもいいのかな?

No. 482 # 68user 1999/10/20 (水) 23:50
多分「どちらでもよい」だと思います。
    133.205.78.72/29 は、
        10000101 11001101 01001110 01001000 のうち、最初の29ビットにマッチするもの
    を表すので、10000101 11001101 01001110 01001??? にマッチし、
    結局 133.205.78.72〜133.205.78.79 にマッチする。

    一方 133.205.78.79/29 は、
        10000101 11001101 01001110 01001111 のうち、最初の29ビットにマッチするもの
    を表すので、10000101 11001101 01001110 01001??? にマッチし、
    結局 133.205.78.72〜133.205.78.79 にマッチする。
ではないでしょうか。ネットマスクの意味からいって、
ネットマスク*外*のビットには、とくに意味はないと思います。

ただ、意味なくビットを立てるのはわかりにくいので、
僕なら 133.205.78.72/29 を選びます。

あと、わかっておられるとは思いますが、133.205.78.72/29 だと
133.205.78.72 自身も含まれますので、
> 133.205.78.73〜133.205.78.79 のホストのアクセスを禁止
にはなりません。

# 133.205.78.72/29 というドメインがあって、133.205.78.72 が
# ゲートウェイアドレスなら構いませんが。

No. 483 # 68user 1999/10/21 (木) 00:05
> # 133.205.78.72/29 というドメインがあって、133.205.78.72 が
> # ゲートウェイアドレスなら構いませんが。
あれ、ホスト部が All zero な IP アドレスってゲートウェイじゃないかも。
133.1.0.0 とか 133.2.0.0 などのIPアドレスって、何て呼ぶんでしたっけ…。

No. 484 # 1999/10/21 (木) 00:17
おお、すばやいご回答、ありがとうございます。

>ネットマスク*外*のビットには、とくに意味はないと思います。
なるほど、分かりました。

>僕なら 133.205.78.72/29 を選びます。
この選び方の違いに過ぎなかったのですね。

>133.205.78.72 自身も含まれますので、
あっ、すいませんm(_ _)m
133.205.78と指定した場合は、133.205.78.1〜133.205.78.255だと
いう記述をどこかで読んでたので、ここでも間違ってマスクされた
ビットが全部0となる場合を除外してしまいました。

>133.1.0.0 とか 133.2.0.0 などのIPアドレスって、何て呼ぶんでしたっけ…。
話に付いて行けない…(苦笑)
IPアドレスもちゃんと勉強しないといけないなぁ…

No. 485 # mm 1999/10/21 (木) 00:18
すいません。
↓の名前を入れ忘れましたm(_ _)m

No. 486 # mm 1999/10/22 (金) 00:56
先の質問に関連して、今回初めて .htaccess について調べたのですが、
どうもよく理解できないことがあるので、教えてください。

order は、allow と deny の評価順序を指定するというような説明があるんですが、
これはどういう意味なのでしょうか?

最初、評価順序がどう影響するのか分からなかったのですが、
「UNIX &インターネットセキュリティ」(O'REILLY)の
    deny,allow は、denyとallowの両方に含まれるhostは許可する
    allow,deny は、denyとallowの両方に含まれるhostは禁止する
という趣旨の記述を読んで、ようやく使い方については分かったのです。

でも、このような作用をなぜ評価順序で説明するのかが理解できないのです。

また、例えば

order allow,deny
allow from hostA
deny from hostB

という設定があった場合、どちらにも含まれないhostC からのアクセスは
どうなるのでしょうか?
allow と deny の双方を指定するってことは、どちらか一方が必ず from all
になるとは限らないですよね(もし、そうなら省略可能にすると思うので)。

No. 487 # 68user 1999/10/22 (金) 01:30
ん…X68000.startshop.co.jp の時計がずれてる。

> 「UNIX &インターネットセキュリティ」(O'REILLY)の
> deny,allow は、denyとallowの両方に含まれるhostは許可する
> allow,deny は、denyとallowの両方に含まれるhostは禁止する
> という趣旨の記述
ん〜、これもどうも…何か違うような。確かに order は
まぎらわしいですねぇ。

例えば order deny,allow は
    1. 最初は全て許可
    2. deny で指定されていたら拒否
    3. allow で指定されていたら許可
という手順で評価しますが、大事なのは
    「deny にマッチしても、その後 allow にマッチした場合は、閲覧を許可する」
ということだと思います。

例えば
    阪大からは弾くけど、阪大の工学部(適当)からのみ許可する場合
    order deny,allow
    deny from 133.1
    allow from 133.1.2

    阪大は許可するけど、阪大の工学部だけは弾く場合
    order allow,deny
    deny from 133.1.2
    allow from 133.1
てな感じでどうでしょう。より一般化すると、
    「許可したホスト以外は拒否」なら
        order deny,allow
        deny from all
        allow from 許可するホスト

    「拒否したホスト以外は許可」なら
        order allow,deny
        allow from all
        deny from 拒否するホスト
でしょうか。上の2つの order を逆にすると、どのホストからも
見られなくなります。

素人考えでは、
    deny from 133.1.2
    allow from 133.1
と書けば、上から順に評価する、ってな風にすればわかりやすいのに、
わざわざ order なんか指定できるようにしたからわかりにくくなった、
と思ってます。もしかしたら、もっと難しい理由があって order が
用意されてるのかもしれませんが。

> どちらにも含まれない hostC からのアクセスはどうなるのでしょうか?
許可されると思います。order mutual-failure なら拒否されます。
# order mutual-failure
#  …allow に指定され、deny に指定されていないホストのみ許可。それ以外は拒否。

No. 488 # 68user 1999/10/22 (金) 01:44
なので、
    阪大は許可するけど、阪大の工学部だけは拒否し、なおかつ
    群馬大は弾くけど、群馬大工学部だけは許可する
という設定は無理じゃないかと思ってます。仮にできるとしても、
2つに分ける必要がありますよね。変なの。

No. 489 # mm 1999/10/22 (金) 02:43
さっそく、ありがとうございます。

>ん〜、これもどうも…何か違うような。
あっ、関係ないかも知れないけど、正確に引用しときますね(苦笑)
>order ord
>許可文と拒否文をチェックする順番を指定する。
>"deny,allow"を指定すると、最初に拒否エントリをチェックする。
>拒否リストと許可リストの両方に含まれるサーバーは許可する。
>"allow,deny"を指定すると、最初に許可エントリをチェックする。
>両方に含まれるサーバーは拒否する。
>"mutual-failure"を指定すると、許可リスト中のホストに許可を与え、
>拒否リスト中のホストを拒否し、それら以外については拒否する。

68userさんの説明とapacheのマニュアルを見ると、
すくなくとも、"mutual-failure"の説明は、
両方に含まれる部分について正確さを欠いてますね。


以下について応答する前に、ちょっと確認なんですけど、
>上の2つの order を逆にすると、どのホストからも
>見られなくなります。
これは、下に関しては、「どのホストからも見えてしまう。」
の間違いということはないのでしょうか?

No. 490 # 68user 1999/10/22 (金) 02:57
> これは、下に関しては、「どのホストからも見えてしまう。」
> の間違いということはないのでしょうか?
あ、間違いです。
    「許可したホスト以外は拒否」なら
        order deny,allow

        order allow,deny
にすると、「全部拒否」になってしまい、
    「拒否したホスト以外は許可」なら
        order allow,deny

        order deny,allow
にすると、「全部許可」になってしまう、ですね。

> "mutual-failure"の説明は、
> 両方に含まれる部分について正確さを欠いてますね。
ん〜、不正確とは言えないかもしれないけど、不親切ではありますね。
mutual-failure でも allow,deny の順に評価され、allow にマッチしたとしても
その次に deny について評価され、そこでマッチしたら拒否、ってことです。

そういうことを
    http://japache.infoscience.co.jp/japanese_1_3/manual/mod/mod_access.html#order
    allowとdeny状態が評価されるどんな場合でも、"short-circuiting"は存在しません。
は言ってるんでしょうけど、もともと order っていう仕組みがわかりにくいのに、
ヘボい訳のせいで さらにわけのわからんことに。

No. 491 # mm 1999/10/22 (金) 03:42
>あ、間違いです。
よかった。
これが違ったら、また最初から理解し直しになるところでした(苦笑)

>ヘボい訳のせいで さらにわけのわからんことに。
あっ、確認したのは、
>Only those hosts which appear on the allow list and
>do not appear on the deny list are granted access.
の方だったので、これなら問題ないですよね。


先の回答に戻ります。

>> どちらにも含まれない hostC からのアクセスはどうなるのでしょうか?
>許可されると思います。
なるほど、やはりデフォルトは許可なんですね。

> 「deny にマッチしても、その後 allow にマッチした場合は、閲覧を許可する」
評価が後の方が優先するような感じはあったのですが、どうもよく分からなかったのです。

>阪大からは弾くけど、阪大の工学部(適当)からのみ許可する場合
allow か deny どちらかが常に from all なら、もっと別の指定の仕方があるだろうし、
なんとなく、こういう使い方を考えてるのかな…、と思ったもので、
その前にどちらにも現れない hostC の取り扱いをお伺いしました。

> 阪大は許可するけど、阪大の工学部だけは拒否し、なおかつ
> 群馬大は弾くけど、群馬大工学部だけは許可する
>という設定は無理じゃないかと思ってます。
なるほど、そうですね。
ここまでは、考えてなかった(苦笑)


68user さんの回答を読んでいて、ふと思ったのですが、

実際には、allow list と deny list があるのではなく、
例えば allow list だけがあって(抽象的な意味で)、
この list は最初は全ホストが詰まってる。
そして、allow 指令は、ここに指定されたホストを追加し、
deny 指令は、指定されたホストをここから削除する。
また、order による評価順序は、この追加、削除の動作順序で、
最後に list に残ったホストのみを許可する。
なお、mutual-failure の場合は、list を最初に空にし、
allow 指令を先に評価する。
(逆に、最初は空の deny list だけがあるとしても同じ)

というように考えるってのは、どうでしょうか?

Apache 1.3 から、deny,allow には(初期状態はOKです)とか、
allow,deny には (初期状態はFORBIDDENです) って注釈が
ついたから、ちょっと的ハズレかな…?

No. 492 # 68user 1999/10/22 (金) 04:10
> というように考えるってのは、どうでしょうか?
good です。…と思ったら、

> Apache 1.3 から、deny,allow には(初期状態はOKです)とか、
> allow,deny には (初期状態はFORBIDDENです) って注釈が
> ついたから、
う、知らなかった。ということは、

> order allow,deny
> allow from hostA
> deny from hostB
> という設定があった場合、どちらにも含まれないhostC からのアクセスは
> どうなるのでしょうか?
少なくとも apache 1.3 では `不可' ですね。実験してみたところ、
拒否されました。

ということは、order allow,deny って order mutual-failure と
同じ意味になってしまうんじゃないのかなぁ…。order allow,deny の
初期状態を FORBIDDEN にして、なにかうれしいことがあるんだろうか。

No. 493 # よしだ 1999/10/22 (金) 14:39
はじめまして。いきなりですが質問があります。
aliasesファイルを>newaliasesで更新しようとした際、
以下のようなメッセージが出て、aliasesが機能しません。

root@xxx>newaliases
WARNING: writable directory /var
WARNING: writable directory /var/spool
WARNING: writable directory /usr/ucblib
WARNING: writable directory /usr/ucblib
dbm map "Alias0": unsafe map file /usr/ucblib/aliases
WARNING: cannot open alias database /usr/ucblib/aliases
Cannot create database for alias file /usr/ucblib/aliases: No such device

  ディレクトリのアクセス権などをいじってみたのですが、うまくいき
ませんでした。
  もし、解る方がいらっしゃいましたらよろしくお願い致します。

No. 494 # 68user 1999/10/22 (金) 15:26
goo で 「newaliases warning writable dbm」で検索しました。
    http://www.swlab.csce.kyushu-u.ac.jp/~kazunori/install/sendmail.phtml
    http://www.sigma.tosho-u.ac.jp:8082/inet/newsos.6.1/sendmail-8.9.3/README
ですかね。

ところでさ、OS の種類とバージョン、sendmail のバージョンくらい
書きましょうよ。UNIX って言ってもいろいろあるんだから、uname -mrs
とか uname -mrsp の結果を書くのは、基本中の基本だと思います。

No. 495 # mm 1999/10/22 (金) 23:33
なんだか、また分からなくなってしまった(苦笑)

アクセスしてきた host に対して、
deny,allow の場合は、初期状態を OK にして、
allow,deny なら、初期状態を FORBIDDEN にする。
allow 文にこの host が含まれると状態を OK に書き換えて、
deny 文にこの host が含まれると状態を FORBIDDEN に書き換える。
これらの評価が終わった後の host の状態がアクセス可否を決める。

ということなら、それでもいいんだけど、
これでは確かに mutual-failure の存在意義がないですね…???


access.conf での allow from all とかの設定は、
  .htaccess でのアクセス制限がない場合にしか意味はないんですよね?

No. 496 # 68user 1999/10/22 (金) 23:53
> ということなら、それでもいいんだけど、
ということだと思います。いまいち納得できませんが、このサーバで
    order allow,deny
    deny from hoge.ac.jp (架空のドメイン)
とすると (=allowを書かない) 全部弾かれましたので。

> access.conf での allow from all とかの設定は、
> .htaccess でのアクセス制限がない場合にしか意味はないんですよね?
access.conf で AllowOverride Limit(or All) としているなら
    access.conf で allow/deny 設定をしていても .htaccess で設定を上書き可能
access.conf で AllowOverride None(or Limit以外) としているなら
    .htaccess で設定を上書き不可。access.conf での allow/deny 設定が有効。
ですかね。

No. 497 # mm 1999/10/23 (土) 03:41
>ということだと思います。いまいち納得できませんが、
なるほど、(納得できないという点で)とりあえず、そう理解しておきます。

>access.conf で AllowOverride Limit(or All) としているなら
あっ、そうですね。それが前提ですね。

まだちょっとの部分もありますが(苦笑)
とにかく、どうもありがとうございましたm(_ _)m

No. 498 # よしだ 1999/10/25 (月) 10:33
sendmail8.8.6以降、aliasesファイル等がシンボリックリンクだと、newaliasesでエラーになる為、リンクを張り直しました。
以下の手順でうまくいきました。

cd /usr/ucblib
rm aliases aliases.dir aliases.pag
cd /var/ucblib
mv aliases aliases.dir aliases.pag /usr/ucblib
ln -s /usr/ucblib/aliases /var/ucblib/aliases
ln -s /usr/ucblib/aliases.dir /var/ucblib/aliases.dir
ln -s /usr/ucblib/aliases.pag /var/ucblib/aliases.pag

>ところでさ、OS の種類とバージョン、sendmail のバージョンくら>い書きましょうよ。UNIX って言ってもいろいろあるんだから、
>uname -mrsとか uname -mrsp の結果を書くのは、基本中の基本だ>と思います。
本当に一番大事な事を書くのを忘れていました。ごめんなさい。
どうもご迷惑おかけしました・・・。

No. 499 # なが [E-mail] 1999/10/26 (火) 11:46
パソコンをたちあげると、dfs.vxdがありませんとかでてそこで
止ってしまいます。何かキーボードを押すと次の画面(いつもの
デスクトップの画面)になります。それ以降は、問題ありません。
dfs.vxdとはいったい何者なのでしょうか?
もし知っている方がいましたら、教えてください。

No. 500 # goosan [E-mail] 1999/10/30 (土) 12:36
一般に "pwd" と "echo $cwd" は同じとされますが、環境に
よっては違う結果を生じることがあります。
これは説明しにくいので、例をあげてみます。
カレントディレクトリが /home/username で、ここに bin という
名前のディレクトリ /work/bin へのシンボリックリンク
(bin@ -> /work/bin) があったとします。ここで cd bin として
ディレクトリを移動すると、echo $cwd とした場合は
/home/username/bin と表示されるのですが、pwd とすると
/work/bin と表示されます。

No. 501 # テスト [E-mail] 1999/10/31 (日) 00:02
テスト投稿です
無視して下さい

No. 502 # ひでさん [E-mail] 1999/11/02 (火) 16:20
初めて投稿します。
ちょっと質問があるのですが
Prelを使いSendmailでメールを送るCGIを作っています。
そこで 、BCCまたはCCで複数のメール先を指定して送る場合
メールアドレスの繋ぎ部分は、半角スペースで区切り渡すのでしょうか?
此へんのプロセスが判らなく困っております
よろしければ教えて頂けないでしょうか?

No. 503 # 68user 1999/11/02 (火) 16:45
> 一般に "pwd" と "echo $cwd" は同じとされますが、環境に
> よっては違う結果を生じることがあります。
なるほど、確かにそうですね。勉強になります。

しかし、pwd の説明で「echo $cwdと同じ」というのもひどいなぁ…。

> メールアドレスの繋ぎ部分は、半角スペースで区切り渡すのでしょうか
カンマ(,)です。
    Cc: foo@bar.com,hoge@fuga.com,abc@def.ac.jp
とすればいいんですが、行が長くなりすぎるなら、
    Cc: foo@bar.com,
    (半角空白)hoge@fuga.com,
    (半角空白)abc@def.ac.jp
と、folding します。詳しくは ftp://ftp.iij.ad.jp/pub/RFC/rfc822.txt
「3.1.1. LONG HEADER FIELDS」あたりをどうぞ。

No. 504 # ひでさん [E-mail] 1999/11/02 (火) 18:56
早速の REありがとうございます
勉強になりました。
早速試してみます

No. 505 # 山井 孝雄 [E-mail] 1999/11/02 (火) 21:16
初めて掲示板を利用させていただきます。
POP3サーバーのメールをWWWブラウザインタフェースで読み出すCGIを作っています。「POP3クライアントを作ってみよう(1)(2)(3)」を利用させていただき、あらかたの処理ができるようになりました。
感謝いたします。
早速の質問ですが、Subject及び添付ファイルのファイル名に日本語が使われているとき、nkfでの変換を照会されていますが、ntfの組み込みの方法についてアドバイスいただければ幸せです。
Linuxではnkf17をうまくインストールできた(まだ試験はしていない)のですが、WindowsNTへのインストール方法がわかりません。
WindowsNTでもLinuxと同じようにできるのでしょうか。
Makefileのshar:以降の書き換えでいけるのでしょうか。それともSystemコールでnkf32.exeを使うのでしょうか。
初心者に毛の生えたレベルでやっています。方法またはその方法がかかれたURLがありましたら教えてください。

No. 506 # 山井 孝雄 [E-mail] 1999/11/02 (火) 21:24
nkfについての質問(追伸)
こちらのシステムの説明が抜けていました。
WindowsNT4
IIS3
perl5.005_03(ActivePerl Build 513)+DBI+DBD-ODBC
です。

No. 507 # 68user 1999/11/02 (火) 22:04
> WindowsNTでもLinuxと同じようにできるのでしょうか。
Cコンパイラはお持ちですか? あるならソース持ってきてコンパイルすればいいでしょうけど、
コンパイラがないならバイナリインストールすればいいです。

ただ、nkf -m でやるなら テンポラリファイル経由でデータを受け渡したり、
IPC::Open2 などを使わなきゃいけないので面倒です。毎回プロセスを起動しなければ
いけないので重くなりますし。

なので、http://www.cc.rim.or.jp/~ikuta/mime_pls/ を持ってきて
    require 'mimer.pl';
    $data = &mimedecode($data,'EUC');
とした方がいいと思います。
    http://X68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?log=1999-09-16
に書いた MIME エンコードの逆ですね。

No. 508 # ひでさん [E-mail] 1999/11/02 (火) 23:03
突然現れて質問ばかりで申し訳ありません
今一つ教えてください
データーを分割して自動で読み取る為には?
たとえば1000のデータが入った@DATAがあるとします
このデーターを100ずつ順に読み取るには
read,seekを使って読み取る事は、可能だと思いますが
順に100ずつ1000のデータを読み取るにはどのような方法があるでしょうか
よろしくお願いいたします

No. 509 # 68user 1999/11/02 (火) 23:11
> たとえば1000のデータが入った@DATAがあるとします
配列 @DATA に既にデータが入っているのですか? なら splice を
使えばいいでしょう。「100ずつ順に」*何をしたいのか* が
わからないので、これ以上はなんとも言えません。

read/seek は、配列 @DATA が空で、ファイルから @DATA に
読み込むときに使うものです。でもまぁ perl なら、わざわざ
read/seek のような低レベルな関数を使う必要はないでしょう。

No. 510 # ひでさん [E-mail] 1999/11/02 (火) 23:28
ありがとうございます
実は、前の質問と関連がありまして
データーに入ったメールアドレスをBCCで送信する際に
一度に多くのデーターを打ち込むとサーバに負担が掛かると思い
たとえば100ずつ読み込んで送信をしたいというわけなんです
一般的に一度にどれくらいのBCCだったら遅れるんでしょうか?
サーバのレスポンスも関係があると思いますが・・。

No. 511 # 68user 1999/11/02 (火) 23:42
@DATA に1000個入っていて、100ずつ送信したいなら
    while (@DATA){
        @addrs = splice(@DATA,0,100);
        $CC = join(",\n ",@addrs);
        メール送信
    }
でいいです。

でもまぁ、1000 送るならそれなりに時間がかかりますが、負荷がうんぬんと
いうよりは、SMTPサーバが
    DNS(MX)引いて
    相手先に connect して
    SMTP しゃべって
    本文を送る
のに時間がかかる、という感じでしょうか。ほとんどは相手を待ってるだけです。

別に1000個 Bcc が書いてあっても、並行して1000のコネクションを
張るわけではないので(SMTPサーバの仕様にもよりますが)、マシンの
負荷はそんなに気にしなくてもいいでしょう。

それでも1000は多いと思うなら、100ごとに分割すればいいんじゃ
ないんでしょうか。ただしテストは入念にやって下さい。

No. 512 # ひでさん [E-mail] 1999/11/02 (火) 23:50
68userさん
重ね重ねありがとうございます
十分検討&テストしてやってみます
本当にありがとうございます

No. 513 # かりり 1999/11/03 (水) 02:33
本日付けで復帰しました
でも、CGIの使えないallesでした。(w
テレホの都合上。一年はアレスです。
webpageを一応作るので、リンクさせて下さいね。
友達のwebspaceを借りる予定なのでcgiは諦らめてません!!
あと、質問なんですけど、systemfileのddlem.dll
ってファイルが起動するたびに、「壊れています」と言う表示が出ます
不都合はないんですけど、これって大事なファイルですか?
スキャンかけてもエラーが出ないんですけど。

No. 514 # みのる [E-mail] 1999/11/03 (水) 04:45
はじめまして。みのると申します。ご教授願えれば幸いです。

環境) WindowsNT4 SunOS 4

上記環境で、NTのログファイルから一定時間内(00:00:00〜05:59:59)の行だけを
抽出したいのですが、条件にあう(この場合カラムがまちまちなので、大体の
カラム位置でヒットする)行を抽出する方法はありますでしょうか。
【split -l だと行数がわかっていないとだめなのでこの場合は当てはまらないですよね】
scriptを組もうと思ったのですが、ヒントになるサンプルをみつけることができず、
諦めてしまいました(^^;)。

とりあえず、条件にあう行だけをhead(偶然、ファイルの頭からだったので)で
取り出して急場をしのぎました。ただ、今回はviで開いたのですが、大きいサイズの場合
この方法では無理が生じてくると思うのです。

何か他にいい手だてはないものでしょうか。。。

No. 515 # 68user 1999/11/03 (水) 05:38
むぅ、なぜか繁盛している…。

> webpageを一応作るので、リンクさせて下さいね。
どうぞ〜。

> と、質問なんですけど、systemfileのddlem.dll ってファイルが
僕は UNIX 環境しか持ってないんですよ。あと一般論として、質問するときは
自分の環境 (OS名+バージョンなど) は必ず書いてください。Windows なら
    http://www.so-net.ne.jp/ClubHouse/room/pc_scramble_win/pc_scramble_win.html
で質問すればいいんでないでしょうか。

> 一定時間内(00:00:00〜05:59:59)の行だけを抽出したい
    % grep '0[0-5]:[0-5][0-9]:[0-5][0-9]' logfile
ではダメですか?

No. 516 # かりり 1999/11/03 (水) 07:50
どうもすみません。初心者みたいなことをしてしまいまして。以後気をつけます

No. 517 # みのる 1999/11/03 (水) 09:26
ありがとうございます。

どうしてgrepの正規表現に気づかなかったのだろうと恥ずかしい限りです。
明日、検討してみます。

No. 518 # 山井 孝雄 [E-mail] 1999/11/03 (水) 09:44
>> WindowsNTでもLinuxと同じようにできるのでしょうか。
早速のアドバイス、ありがとうございます。早速試してみます。
Cもありますので、再コンパイルの方法も試してみます。
今後ともよろしくお願いいたします。

No. 519 # みつる 1999/11/03 (水) 23:16
はじめまして。みつると申します。ご教授願えれば幸いです。

環境) Windows98

今、JSWDKを用いてJSPやServletを試しているのですが、
HTTPプロトコルを通じてどのようなデータが送受信さ
れているかわかりません。プロキシーサーバーをを自作して
リクエストを出力すればいいような気がしますが、既にこの
ような用途に使用できるソフトが存在すると思います。
どなたかご存知ないでしょうか?
よろしくお願いします。

No. 520 # 68user 1999/11/04 (木) 01:22
HTTP Proxy 自体はそんなに難しくないので、いろいろあるんでしょうが、
残念ながら僕は具体的なソフトウェア名を知りません。
# proxy って言うとすぐアングラ系になっちゃうのが嫌なので、
# 探したことがない。

mm さんがご存知かもしれないので、質問されてみてはいかがでしょうか。
    http://www2s.biglobe.ne.jp/~cru/library/zddbbs/cgi-bin/wwwboard.cgi

No. 521 # みつる 1999/11/04 (木) 07:09
ありがとうございます。

mmさんに質問してみます。

No. 522 # みのる 1999/11/04 (木) 23:56
68user さん、ありがとうございました。

% grep '0[0-5]:[0-5][0-9]:[0-5][0-9]' logfile
で無事該当ログを抽出することができました。

ところで、SunOS5.6にverupしたのですが、
"vipw"が利かなくなりました。shadowはviで編集及びbackupも
とれているのですが、"vipw"とすると"etc/passwd is busy"となり
編集不可能なのです。今は"vi"で編集しています。

crontabが上手く働いてないのでしょうか?

No. 523 # 68user 1999/11/05 (金) 03:22
Solaris の vipw の動作は知りませんが、一般論として `busy' と言われたなら
    ・前に実行した vipw のプロセスが残っていないか、ps -ef | grep vipw で確認
    ・fuser /etc/passwd で、/etc/passwd をオープンしっ放しのプロセスを調べる
    ・/tmp や /var/tmp などにロックファイル (というよりテンポラリファイルかな) が
        残っていないか調べる ( BSD なら /etc/ptmp* とか /etc/pw* など)
    ・truss vipw で、どこでどのファイルを読んだ後エラーになっているか調べる
てなところでしょうか。

> crontabが上手く働いてないのでしょうか?
僕は Solaris マシンでroot 権限を持ってないのでわかりませんが、
Solaris の vipw って cron が関わってくるんでしたっけ?

No. 524 # みのる 1999/11/09 (火) 11:51
68user さん、ありがとうございます。

ちょっと他の仕事が立込んでいますが、確認してみます。

No. 525 # hh 1999/11/09 (火) 20:23
お聞きしたいんですが、いくつかドライブがあるんですが、今、それぞれ、OSはwinddow95,window98,
Linuxにしたいですが、できますでしょうか。マシンはFujitsuのDos/Vです。ご存じなら、教えていただけませんか。
よろしくお願いいたします。

No. 526 # hh 1999/11/09 (火) 20:24
お聞きしたいんですが、いくつかドライブがあるんですが、今、それぞれ、OSはwinddow95,window98,
Linuxにしたいですが、できますでしょうか。マシンはFujitsuのDos/Vです。ご存じなら、教えていただけませんか。
よろしくお願いいたします。

No. 527 # 68user 1999/11/10 (水) 00:15
> 今、それぞれ、OSはwinddow95,window98, Linuxにしたいですが、
今 winddow95,window98, Linux が入ってるんですか?
これから winddow95,window98, Linux を入れたいんですか?

> できますでしょうか。
多分できると思いますが、Windows も Linux も使ってないので
確かなことは言えません。
    http://www.so-net.ne.jp/ClubHouse/room/pc_scramble/pc_scramble.html
で教えてもらえるでしょう。

No. 528 # hh 1999/11/10 (水) 10:39
68userさん
どうもありがとうございました。いま、OSはwindows95だけです。
これから、window98とLinuxを入れたいです。
教えていただいたURLも見てみます。

No. 529 # mmc 1999/11/10 (水) 16:24
2000年1月1日にセットしたいのですが?

No. 530 # みのる 1999/11/10 (水) 18:01
"vipw"とすると"etc/passwd file is busy"の件

/etc にテンポラリファイルが残っていました。"temp"で探していましたが、"tmp"でした。
ありがとうございました。

現在、Turbolinux4.2 インストールで奮闘しておりました。なんとか動くようになったものの、
時間表示が白くなり見えない状態です。なかなかサーバ構築までの道のりは遠いようです。。。

No. 531 # やまい [E-mail] 1999/11/10 (水) 18:33
名前を「やまい」元(山井 孝雄)に変えました。
またまたHELP依頼です。ご存じの方がおられましたら教えてください。

PERLにDBIとDBD(ODBC)を組み込もうとしています。
PERL5.003のときはうまくいっていたのですが
今回5.00503ではうまくいきません。
PERL(APi522e.exe)をインストールした後、
DBI(DBI-1.13.tar.gz)を展開しインストールまではうまくいきました。
DBD(DBD-ODBC-0.22.tar.gz)を展開した後、
perl makefile.pl は正常に実行できたのですが、
nmake で以下のエラーがでてストップしてしまいます。

    cl.exe -c -IC:/Perl/site/lib/auto/DBI -Od -MD -DNDEBUG -GX -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DPERL_CAPI -Od -MD -DNDEBUG -GX -DVERSION=\"0.22\" -DXS_VERSION=\"0.22\" -IC:\Perl\lib\CORE dbdimp.c
dbdimp.c
C:/Perl/site/lib/auto/DBI\DBIXS.h(403) : warning C4005: 'DBIS' : マクロが再定義されました。
dbdimp.c(31) : error C2106: '=' : 左のオペランドが、左辺値になっていません。
NMAKE : fatal error U1077: 'cl.exe' : リターン コード '0x2'
Stop.

なお、使用環境は
Windows 4.0 Server
ServisePack3
Visual C++ Version 5.0
です。

チェックポイント等がありましたら教えてください。





No. 532 # 匿名200x 1999/11/11 (木) 07:36
始めまして。
質問があります。
C言語(CGI)でファイルロック関数を作ろうと思うのですが
どうやらディレクトリがある,ないで判定すれば
プロセスが割り込んでくる確率も少ないらしいので
mkdir,rmdir,sleep関数を使って作ろうと思います。
でとりあえず各関数使ってみたら
「ヘッダファイルがてーぎされてへんよー!注意しなはれ〜」
みたいなエラーが出てまいりました。
私はWindows環境しかないので
FTPアップロード->コンパイルという手段で作成してます。
Windows環境なら"direct.h"をインクルード
すれば良いのですがどうやら違う(ヘッダファイルがない)みたいです。
サーバーの/usr/includeディレクトリとか覗けるので色々探してみましたが
お手上げ状態です。。。
そこでmkdir,rmdir,sleep関数のヘッダファイルの位置を
教えてほしいのですが…
# インクルードしなくても動くことは動くんですが。。。気に入らないです。
サーバーが何たらUNIXか何たらLinuxかがわかりません。
BSD系UNIX(???)(Linux???)たぶん何たらLinuxだと思うのですが。。
gccのバージョンは(gcc -vした結果)
>Reading specs from /usr/lib/gcc-lib/i386-pc-linux->gnulibc1/egcs-2.91.66/specs
>gcc version egcs-2.91.66 19990314 (egcs-1.1.2 release)
なんか情報が少なすぎますけど
「自分の環境ではこうですよ。」
でもかまいません。
よろしくお願いします。

No. 533 # goe 1999/11/11 (木) 11:47
サーバ上に、Windowsで圧縮したlzhファイルをおいて、サーバで解凍したいのですが、
xxx% lha x filename(圧縮ファイル名)
と、コマンドを入力しても実行されません。
lhaのツールがインストールされているか調べる方法等がわかりません。教えていただけますでしょうか?

No. 534 # イプサム 1999/11/11 (木) 13:23
はじめまして。
c言語関数で調べていることがあります。
子プロセスを生成するspawn関数というものがあります。
この関数が、POSIX準拠の関数か否かをご存知の方
いらっしゃいますか?
よろしくお願いいたします。

No. 535 # イプサム 1999/11/11 (木) 13:24
はじめまして。
c言語関数で調べていることがあります。
子プロセスを生成するspawn関数というものがあります。
この関数が、POSIX準拠の関数か否かをご存知の方
いらっしゃいますか?
よろしくお願いいたします。

No. 536 # イプサム 1999/11/11 (木) 13:24
はじめまして。
c言語関数で調べていることがあります。
子プロセスを生成するspawn関数というものがあります。
この関数が、POSIX準拠の関数か否かをご存知の方
いらっしゃいますか?
よろしくお願いいたします。

No. 537 # 68user 1999/11/11 (木) 19:20
> 2000年1月1日にセットしたいのですが?
BIOS で時間をセットすればいいでしょう。

> PERLにDBIとDBD(ODBC)を組み込もうとしています。
う〜ん、全然わからんです。Windows環境持ってない上に、こういう
エラーって、大抵の場合
    #ifdef WIN32
の書き忘れが原因だったりするんで、perl/Windows/DBI/DBD に精通していない
僕にはさっぱりわかりません。

> サーバーが何たらUNIXか何たらLinuxかがわかりません。
`i386-pc-linux' とあるので Linux なんでしょうけど、
OS名は uname -a でわかります。
# ディストリビューション名ってどうやって調べるんだろう?

> 「ヘッダファイルがてーぎされてへんよー!注意しなはれ〜」みたいなエラー
というのはあり得ないです。インクルードしなくても動くということは
「mkdir/rmdir/sleep という関数の宣言がされていない」という warning
(implicit declaration of function `mkdir') ですかね。エラーや warning は
訳さずそのまま書いて下さい。

で、インクルードファイルがわからないときは、man で確認して下さい。
    % man 2 mkdir
    % man 2 rmdir
    % man 3 sleep
とすると、
    NAME mkdir - make a directory file
    SYNOPSIS
        #include <sys/stat.h>
        int mkdir(const char *path, mode_t mode)
という情報が得られます。

> xxx% lha x filename(圧縮ファイル名)
> と、コマンドを入力しても実行されません。
「実行されない」とは何ですか? 「Command not found」になるんですか?
    % locate lha
で、ファイル名に `lha' を含むファイル一覧が表示されますが、
それでも見付からないなら本当にインストールされていないんでしょう。
管理者に頼むか、自分でインストールすることになります。

> 子プロセスを生成するspawn関数というものがあります。
> この関数が、POSIX準拠の関数か否かをご存知の方
うーん、わからんです。FreeBSD/Solaris ともに spawn という関数は
ないので、POSIX 準拠ではないと思うんですが…確信はありません。

No. 538 # PUYO [URL] 1999/11/12 (金) 00:49
初めまして。
ネットワークプログラミングの基礎知識 大変興味深く読ませていただきました。これからもがんばって下さい。

陰ながら応援しています。

No. 539 # 68user 1999/11/14 (日) 04:48
どもども。間違いなどありましたら、ぜひご指摘お願いします。

No. 540 # 日向 1999/11/14 (日) 14:03
はじめまして。
「ネットワークプログラミング」読ませて頂きました。
説明、サンプルプログラム共に大変分かりやすく、
すぐに自分なりに応用することができ、大変為になりました。^^

ただ、一つだけ分からなかったことがあります。
HTTPクライアントでPOSTメソッドに対応しようとしたのですが、

$message = "name=test&mail=test&url=test&message=test\r\n";
$len = length($message);

print SOCKET "POST /cgi-bin/mybbs.cgi HTTP/1.1\r\n";
print SOCKET "REFERER: (略)/cgi-bin/mybbs.cgi\r\n";
print SOCKET "Content-length: $len\r\n";
print SOCKET "\r\n";
print SOCKET $message;

とした所、実際にはPOSTされていないようなのです。
これは自分の掲示板(本のサンプルの真似ですが)に対してのPOSTですが、
REFERERチェックの入らない友人の掲示板でテストしてみてもPOSTされないようです。
ので、恐らくこちらのスクリプト側に誤りがあると思われるのですが…。
また、\r\nを\rや\nに変えても駄目でした。
どこが間違っているのでしょうか…?ご教授頂ければ幸いです。

ちなみにSunOS 5.6,Perl 5.004_04です。

No. 541 # 68user 1999/11/14 (日) 16:54
# GET ができるのに POST だけができないのなら、外してますが…
HTTP/1.1 では、Host ヘッダが必須になります。
    POST /cgi-bin/mybbs.cgi HTTP/1.1\r\n
    Host: 相手先のサーバ名\r\n
    Content-length: $len\r\n
    \r\n
    $message
でどうですか? これが原因なら、HTTP/1.0 にすればうまくいくはずです。
また、サーバのレスポンスは「400 Bad Request」となっているはずです。

それでもダメなら、
    #!/usr/local/bin/perl
    $|=1;
    sysread(STDIN, $input,$ENV{CONTENT_LENGTH});
    print "Content-type: text/plain\n\n";
    print "$input\n";
という、データを受けて表示するだけの CGI を相手に、いろいろ
試してみて下さい。

No. 542 # みのる 1999/11/15 (月) 15:35
いつも拝見しております。みのるです。(環境:SunOS5.6)
いきなりで大変心苦しいのですが、"passwd"が実行不可となってしまいました。

急に
-r-sr-sr-x 3 root 96392 Feb 24 1999 nispasswd*
-r-sr-sr-x 3 root 96392 Feb 24 1999 passwd*
-r-sr-sr-x 3 root 96392 Feb 24 1999 yppasswd*

となりroot権限で"passwd"コマンドが利かなくなってしまい、
chmod 555 passwd
でアクセス権を変更したのですが、
「passwd(SYSTEM): ○○○○ does not exist
アクセス権が与えられていません。」とエラーになってしまいます。
シンボリックリンクにすればよいのでしょうか???

No. 543 # 68user 1999/11/15 (月) 20:59
> -r-sr-sr-x 3 root 96392 Feb 24 1999 passwd*
これで正しいです。suid/sgid が立ってないと root 以外のユーザが
パスワード変更できなくなります。とりあえず
    % chmod 6555 /usr/bin/passwd
で元に戻して下さい。それでも動かないなら、そのときの症状を書いて下さい。

No. 544 # mm 1999/11/16 (火) 01:07
見逃してた…
spawn系の関数は、MS-DOSに特有のものです。

No. 545 # みのる 1999/11/16 (火) 12:10
下記コマンドでも同じエラーになりました。
昨日、リンクを外してしまったのですが、、、それが原因でしょうか。。。
昨日の時点では、同じノードでした。

# chmod 6555 /bin/passwd
# ls -ali | grep passwd
        313716 -r-xr-xr-x 1 root 96392 Nov 16 11:57 nispasswd*
        313666 -r-sr-sr-x 1 root 96392 Feb 24 1999 passwd*
        313717 -r-xr-xr-x 1 root 96392 Nov 16 11:57 yppasswd*

No. 546 # イプサム 1999/11/16 (火) 17:02
mmさん、ありがとうございます。
UNIX系では、無いのですかねぇ〜。
残念です。

No. 547 # 68user 1999/11/17 (水) 02:43
> 昨日、リンクを外してしまったのですが、、、それが原因でしょうか。。。
多分これが原因じゃないとは思うんですが、元に戻すには
    # rm nispasswd yppasswd; ln passwd nispasswd; ln passwd yppasswd
です。で、どういうエラーなのかいまいち掴めないんですが、
> 「passwd(SYSTEM): ○○○○ does not exist アクセス権が与えられていません。」
○○○○ には何が入るんですか? ユーザ名?

もし NIS 使ってたり、shadow 化してるなら、原因を突き止めづらいですね。
まわりのサーバと /etc のパーミッションを見比べてみてはどうでしょう。

# こーゆーときは truss が便利なんだけど、suid プログラムには
# truss 使えないのね…。

> spawn系の関数は、MS-DOSに特有のものです。
なるほど。ラクダ本の TCP サーバの例で sub spawn というのが
あるんで、C の新しい関数で似たものがあるのかと思ってました。

No. 548 # GAT 1999/11/17 (水) 18:18
始めまして。
「ネットワークプログラミングの基礎知識」
非常に面白かったです。
これからもがんばってください。>68userさん

さっそく質問なんですが。
うちにあるLinux(Vine 1.1)のApache1.3.3は
CGIが「自分 グループ 他人」の「他人」の権限で
動くんです。
ところがCGIが他人の権限で動くのはまずいらしい
ので自分権限で動くようにしたいのですがどうのように
設定ファイルを書きかえれば良いのでしょうか。。
調べてみた所,User命令
(http://japache.infoscience.co.jp/japanese_1_3/manual/mod/core.html#user)
とかでやるんでしょうか?

No. 549 # 68user 1999/11/17 (水) 18:50
> これからもがんばってください。
どもども。ありがとうございます。

> CGIが「自分 グループ 他人」の「他人」の権限で動くんです。
正確には、nobody 権限で動く、でしょうね。

> ところがCGIが他人の権限で動くのはまずいらしいので
これは管理者の方針によります。web しか置いていないサーバでは
各ユーザ権限で動かす方が安全でしょうけど、学校のようにメールや
いろんなデータが置いてあるサーバで各ユーザ権限で動かすのは
危険 (CGIに穴があるとメールなども全て見られてしまう)、
という考え方もあります。

> 調べてみた所,User命令
それは、例えば apache を nobody 権限でなく www (というユーザ)
の権限で動かしたい場合に使います。

例えば locate のデータなども、nobody 権限で作成されるので、
本来 apache は nobody 権限でなく www などの専用アカウントを
作って、その権限で動かした方が安全です。

で、結論としては
    http://japache.infoscience.co.jp/japanese_1_3/manual/suexec.html
を使います。これを使うと CGI/SSI ともに各ユーザ権限で動きます。

長々と語っておいてアレですが、僕は suExec を設定したことはないです。
上のリンクにはコンパイルがどうこうって書いてありますが、必要なのかなぁ。
ソース持ってきて
    % ./configure --enable-suexec
とするのではダメなんでしょうか。いろいろ試してみて下さい。

これとは別に、cgiwrap というのを使う方法もあります。
    ftp://ftp.win.or.jp/pub/network/www/cgiwrap

これだと CGI だけ各ユーザ権限で動きます。コンパイルして
/usr/local/apache/cgi-bin/cgiwrap にインストールして、
    http://localhost/cgi-bin/cgiwrap/~username/cginame.cgi
とすると、/~username/cginame.cgi が username の権限で動きます。
httpd.conf に
    AliasMatch "^/([^/]+)/cgi-bin/(.*)$" "/cgi-bin/cgiwrap/$1/$2"
などと書いておくと、/~username/cgi-bin/hoge.cgi にアクセスしただけで
各ユーザ権限で動かすこともできますね。

ん〜長くなってしまった。

No. 550 # mm 1999/11/17 (水) 21:27
>なるほど。ラクダ本の TCP サーバの例で sub spawn というのが
spawn ってどういう意味なんだろうと以前から疑問だったので調べたら、
魚などの産卵という意味なのですね。

MS-DOSの spawn は、exec(3)を真似たものだと思います。
MS-DOSの主なコンパイラで使えるようです。
exec系のライブラリもありますが、例えばBorland C++の場合
int spawnve(int mode, char *path, char *argv[], char *envp[]);
で、mode に P_WAIT を指定すると、親プロセスはそのままにして、
空きメモリで子プロセスを実行し、終了後に親プロセスに制御を戻します。
mode を P_OVERLAY にすると、execve() と同じになります。

No. 551 # みのる 1999/11/18 (木) 01:57
いつもありがとうございます。みのるです。

> 「passwd(SYSTEM): ユーザアカウント does not exist アクセス権が与えられていません。」の件。

リンク等、元に戻す前に、"passwd"コマンド復活しました。現在、以下の状態です。
313666 -r-sr-sr-x 3 root 96392 Feb 24 1999 nispasswd*
313666 -r-sr-sr-x 3 root 96392 Feb 24 1999 passwd*
313666 -r-sr-sr-x 3 root 96392 Feb 24 1999 yppasswd*

ただ、原因はまだ解りません。trussが使えたので、見てみてはいるのですが、不明です。
ここで質問なのですが、"root"以外のユーザでも、コマンド書換(もしくはアクセス権付与)は
可能でしょうか?私どものサーバセキュリティ上に問題があるような気がしてなりません。

No. 552 # 68user 1999/11/18 (木) 18:32
> trussが使えたので
なるほど。root なら使えるんですね。

> "root"以外のユーザでも、コマンド書換(もしくは
> アクセス権付与)は可能でしょうか?
root 以外の一般ユーザが /usr/bin/passwd を書き換えたり、
パーミッションを変更させることができるか、ということですか?
もちろん普通は不可能ですが、セキュリティホールがある場合は
その限りではありません。

「passwd が効かなくなった=クラック」というわけでも
ないので、しばらく様子を見てはどうでしょう。

No. 553 # GAT 1999/11/19 (金) 02:40
>68user 1999/11/17(水) 18:50
>> CGIが「自分 グループ 他人」の「他人」の権限で動くんです。
>正確には、nobody 権限で動く、でしょうね。
nobody権限というんですか。。
知らなかった(^^;

>> ところがCGIが他人の権限で動くのはまずいらしいので
>これは管理者の方針によります。
むむー
なるほど。
ケースバイケースとかいうやつですか。

>で、結論としては
> http://japache.infoscience.co.jp/japanese_1_3/manual/suexec.html
>を使います。これを使うと CGI/SSI ともに各ユーザ権限で動きます。
>
>長々と語っておいてアレですが、僕は suExec を設定したことはないです。
>上のリンクにはコンパイルがどうこうって書いてありますが、必要なのかなぁ。
>ソース持ってきて
> % ./configure --enable-suexec
>とするのではダメなんでしょうか。いろいろ試してみて下さい。
suEXEC。これですか
Apacheのバージョンアップとともに試してみます。
上手くいったら報告に参りたいと思います。

>これとは別に、cgiwrap というのを使う方法もあります。
> ftp://ftp.win.or.jp/pub/network/www/cgiwrap
>
>これだと CGI だけ各ユーザ権限で動きます。コンパイルして
>/usr/local/apache/cgi-bin/cgiwrap にインストールして、
> http://localhost/cgi-bin/cgiwrap/~username/cginame.cgi
>とすると、/~username/cginame.cgi が username の権限で動きます。
>httpd.conf に
> AliasMatch "^/([^/]+)/cgi-bin/(.*)$" "/cgi-bin/cgiwrap/$1/$2"
>などと書いておくと、/~username/cgi-bin/hoge.cgi にアクセスしただけで
>各ユーザ権限で動かすこともできますね。
suEXECのインストールに失敗したらこちらも試してみます。

No. 554 # 68user 1999/11/19 (金) 03:38
> http://japache.infoscience.co.jp/japanese_1_3/manual/suexec.html
やっぱりこれって古いのね。英語版の方を見て下さい。
    http://japache.infoscience.co.jp/apache/docs/suexec.html

うちでも apache1.3.9 を入れてみましたが、configure,make,make install で
簡単にインストールでき (configureのオプションを付けたり、httpd.conf の
手直しはしましたが)、suExec もうまく動きました。

> nobody権限というんですか。。
わかっておられるかもしれませんが念のため書いておきますと、他人の権限で
動くことを「nobody 権限」と呼ぶのではないです。実際に nobody という
アカウントは実在しており (see /etc/passwd)、その権限で httpd は動いている、
ということです。

なんで nobody で動くかというと、httpd.conf に
    User nobody
と書いてあるからです。

No. 555 # GAT 1999/11/21 (日) 04:51
ちょっと時間が取れなくて
返事遅れました。(_ _)
apache1.3.9は普通に?
configure,make,make install
でインストールできました。
suEXECも無事インストールできました。
CGIなどが各ユーザー権限で動いてました。
ありがとうございます。

>わかっておられるかもしれませんが念のため書いておきますと、他人の権限で
>動くことを「nobody 権限」と呼ぶのではないです。実際に nobody という
>アカウントは実在しており (see /etc/passwd)、その権限で httpd は動いている、
>ということです。
えぇ。その辺は大丈夫です。

No. 556 # 九面で迷ってるオレ 1999/11/21 (日) 14:20
ジェダイナイト、9面のシークレットエリア誰か教えて下さい。

No. 557 # ムチなチュボ 1999/11/23 (火) 23:32
ネットワークプログラミングの基礎知識、凄いです。素晴らしいです。
私のような無知にでもできてしまってちょっと怖いです。
(ほとんど切り貼り状態なんですが・・)
FTPの項についてなんですが
「# FTPサーバに、子プロセスが待っているIPアドレスとポートの情報を渡す」
というのがありますよね。ftptras.plで初めて子プロセスは出てくるのでは。
それ以前の例示には「子プロセス」というコメントは必要無いのでは。
(ちょっとここで悩んでしまったので・・・。)

No. 558 # 68user 1999/11/23 (火) 23:51
> それ以前の例示には「子プロセス」というコメントは必要無いのでは。
どもども。ミスですね。直しておきます。

最初は fork しないと ftp クライアントは作れないと思ってました。
結局それは誤解だったので書き直したのですが、コメントの修正を
忘れてたようです。

# ftptrans で fork してるのも怪しい。ほんとに1プロセスで
# できないのかなぁ?

No. 559 # ムチなチュボー 1999/11/25 (木) 00:01
う〜〜ん。
ローカルのホスト名を得るにはどうすれば良いですか?
開いたSOCKETから手に入れる以外に適当な方法て無いですかしらん。
シェルコマンドは使わずにperlの関数だけで。

RFCの日本語訳ってほんと便利ですよね。感謝しながら読んでます。
PASVの返事て227だけみたいですね。あとは全部エラーみたい。
それと(x,x,x,x,x,x)の「括弧」が付かない場合もあるようですね。
正規表現もむつかしいけど頑張ってるとこおろです。

No. 560 # 68user 1999/11/25 (木) 01:31
> ローカルのホスト名を得るにはどうすれば良いですか?
試してませんが、とりあえず
    http://www.kt.rim.or.jp/~ksk/sock-faq/unix-socket-faq-ja-2.html#ss2.24
    http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlfaq9.html#How_do_I_find_out_my_hostname_do
ここらあたりでうまくいかないですか?

> あとは全部エラーみたい。
> それと(x,x,x,x,x,x)の「括弧」が付かない場合もあるようですね。
なるほど。ところで、こーゆーのがネットワークプログラムのヤな
ところですよね。相手があってのものだから「これで正しいかどうか」
「完璧かどうか」がわからないという。

あと、真面目に作って配布でもするつもりなら
    http://hp.vector.co.jp/authors/VA002682/rfc1123j.htm
も読んで下さい (もう読んでるかもしれませんが)。

# あと、data-connection の peer-port が 20(ftp-data) かどうかの
# チェックもね。

No. 561 # NET放浪人 1999/11/26 (金) 17:44
68USERさんの中で最も得意なプログラミング言語はなんですか?

No. 562 # 68user 1999/11/26 (金) 22:24
elisp です。

…ウソです。perl か C ですけど、人に誇れるほどの
レベルじゃないです。精進せねば。

No. 563 # ムチなチュボ〜 1999/11/28 (日) 00:50
色々ありがとうございました。

> 227だけみたい
たしかに一番上の桁だけ見ろってRFCに書いてありました。

perlて俺のような無知な初心者にも優しい言語ですね!
構文規則が緩いっていうんですか、括弧とか適当でいいし。
とりあえず構文と関数のリファレンスさえあればなんとなく
出来てしまう。ありがたいことです。
まあ…そのおかげかperl使いな人も俺のような駄目パーラから
超スゴイ人まで腐るほど沢山居るらしくてperlなんか今更
「多少」使えても何の自慢にもならないみたいなんですが…。

でもでもこれからもperlで遊ぶぜえ〜。
じゃあさよならあ〜。

No. 564 # 日向 1999/11/29 (月) 12:58
以前にPOSTに関して質問した者です。遅いレスですが…(^^;
どうやら、ソケットに送るPOST〜$messageは、
個別に送った場合、途中の\r\nにHTTPDが反応してしまうようです。
なので、$sendとか、適当な変数に全部繋げて代入し、
print SOCKET $send;
としなければならないようです。
HTTP/1.0を指定し、更にこの方法でやってみた所、POSTが成功しました。
ちなみに、HTTPバージョンを省略した場合は
HTTP/1.1とみなされるみたいです。(全部そうとは限らない…かな?)

No. 565 # 68user 1999/11/29 (月) 22:46
> HTTPバージョンを省略した場合は HTTP/1.1とみなされるみたいです。
省略すると HTTP/0.9 になります。0.9 では GET 以外使えませんし、
ヘッダも送れません。例えば
    GET /~foo/index.html
を送った時点で、サーバからレスポンスが返ってきます。なので、

> 途中の\r\nにHTTPDが反応してしまうようです。
これはそういうことじゃないでしょうか?

なお、HTTP 0.9 で
    POST /~foo/index.html
などとしようとすると、405 Method Not Allowed になるはずです。

No. 566 # 68user 1999/11/29 (月) 23:33
というわけで、
> $sendとか、適当な変数に全部繋げて代入し、
> print SOCKET $send; としなければならない
ということはあり得ないと思いますが、一応試してみたいので
よろしければその掲示板の URL を教えて下さい。

No. 567 # GAT 1999/11/30 (火) 07:38
おはようございます。

ネットワークプログラミングの基礎知識の
C言語でHTTPクライアントを作ってみよう(2)
ではperlと違いヘッダ部分が表示されてますよね?
あれを本体部だけ表示するようにするにはどうしたらいいんでしょう?
色々やってみましたがどうも上手くいかなくて…
「UNIXの場合」はfgets関数をソケット読み出しにも使えますけど
某Windowsは勝手が違うんです。。
# どーみてもUNIXの方がやりやすい
どんな感じかというのがhttp://www.nakka.com/inet/httpc.html
赤系の色で
「/* サーバからデータを受信する処理 */」
とか書かれてる辺りです。
なんとなく見るとやりにくいのがわかるかと^^;;
どうすればいいでしょうか?
思いついたのでいいですからレスください。
どうもアイデアが・・・・

No. 568 # 68user 1999/11/30 (火) 14:25
    while (1){
        char buf[BUF_LEN];
        int read_size;
        static int body_flg = 0;
        char *p;

        read_size = read(s,buf,BUF_LEN);
        if ( read_size > 0 ){
            if ( body_flg ){
                p = buf;
            } else if ( p = strstr(buf,"\r\n\r\n") ){ /* 空行はあるか? */
                p+=4; /* \r\n\r\n の分先に進める */
                read_size -= p-buf; /* サイズ調整 */
                body_flg = 1;
            }
            if ( body_flg ){
                write(1,p,read_size);
            }
        } else {
            break;
        }
    }
こんな感じでどうでしょうか?

No. 569 # 68user 1999/11/30 (火) 15:29
あ、全然ダメじゃん。
> } else if ( p = strstr(buf,"\r\n\r\n") ){
buf は \0 で terminate されてないし、そもそも
\r\n\r\n が1回で読める保証はなくて、ちょうど
境界にまたがってるかもしれない。

ま、そこらへんはよしなに。

No. 570 # k 1999/11/30 (火) 17:35
pingコマンドでは、ホスト名を指定することによって、
そのホスト名(またはIPアドレス)との接続確認が
できます。
これと同様に、そのホスト名(またはIPアドレス)の
特定のポート番号に対して、接続確認を行いたいの
ですが、なにか良い方法ないでしょうか?

No. 571 # 68user 1999/12/01 (水) 00:33
実際に connect するのはダメなんですか?
それ以外の方法はないと思います。多分。

No. 572 # ミレニアム [E-mail] 1999/12/01 (水) 02:33
本サイトはたまにではありますが参考にさせていただいております。
私も何か投稿させていただきたいと考えておりましたが、プログラミングサークル“ミレニアム”を立ち上げましたのでご紹介をさせていただきたいと思います。掲示板の案件と直接関係ないと思われますが容赦願います。
ミレニアムはサークルという体質を生かして医療・福祉・教育の分野で高機能・低価格ビジネスアプリケーション構築を目的としたプログラミングサークルであります。
現在、メンバーは15名程度でホームページを建設中であり、現在CGI等の組める方、VB、VC++、Delphi、Java、HTML、DTP(デザイン)の得意な方を募集致しております。メンバーは現職のプログラマー、DTP構築者、家庭の主婦などいろいろな方で構成されております。
ミレニアムに参加する条件としては本人に常識と責任感と好奇心が必要でありその他は問われません。
興味がございましたらメールにてお返事お願いいたします。

失礼いたしました。解からないことがありましたら私も投稿させていただくかもしれませんのでよろしくお願いいたします

No. 573 # らんらん [E-mail] 1999/12/01 (水) 10:15
はじめまして、いつもHP見さしていただいてます 感謝
winsockを(c言語で)使ってチャットのプログラムを書いてみようと思ったんですけれど、マルチスレッドタイプのサーバーでクライアントにsend()する時(多分IPマルチキャストっ奴を使うと思うんですけど)のやり方について何か情報お持ちでないでしょうか?
接続されたクライアント全てに同報送信できるようにしたいんですけれど、よろしくお願いします。
後、勝手にHPにリンク張ってしまったんですけどよろしかったでしょうか?
まずいようだったら連絡下さい

No. 574 # 68user 1999/12/01 (水) 13:41
マルチキャストするなら、TCP じゃなくて UDP になると思いますが、
そこらへんの基礎知識はありますか? あと、IPv4 ではマルチキャストは
optional なんですが、大抵の OS には実装されてるのかしら?

で、僕も興味はありますが、そこらへんはまだ自分のものにしていないので、
説明できないです。

http://X68000.startshop.co.jp/~68user/net/link-book.html
    「UNIX ネットワークプログラミング第2版 Vol.1」
にとっても詳しく書いてありますので、よかったら買ってみて下さい。
# 今説明しようとすると、この本の丸写しになってしまいますので。

> \r\n\r\n が1回で読める保証はなくて、
ここらへんのことについても、この本に詳しく書かれています。
要は1バイトずつ読めばいいんですが、毎回 read しては遅くなるので
先にバッファに読み込んだり、read しているときにシグナルが飛んできた
場合の EINTR などなど。

8000円出すだけで、5万円分くらいの知識が得られます。おすすめ。

> 勝手にHPにリンク張ってしまったんですけどよろしかったでしょうか?
どうぞ〜。

No. 575 # 日向 1999/12/01 (水) 16:10
>> $sendとか、適当な変数に全部繋げて代入し、
>> print SOCKET $send; としなければならない
>ということはあり得ない

確かにそうでした…$sendに全部代入するのと
HTTPバージョンを色々変えるのを同時に試してて混乱してたみたいです(汗)
というわけで、やっぱり繋げる必要はありませんでした。ハイ。
また、HTTPバージョン省略も0.9扱いになっているようでした。

でも省略すると0.9にされるというのはちょっと驚き。
これはサーバ側でそう設定している為ですよね…?という事は…
今時0.9なんて使わないし…1.0や1.1をデフォルト設定にしているサーバもあるんでしょうか?

No. 576 # 68user 1999/12/01 (水) 17:11
HTTP のバージョン省略時は 0.9 であると RFC で決まっています。
    http://X68000.startshop.co.jp/~68user/net/rfc.html
というより、「省略したもののみを 0.9 とみなす」と言った方が正しいかな。
GET /index.html HTTP/0.9 というリクエストはできないようなので。

No. 577 # らんらん 1999/12/02 (木) 12:32
返事ありがとうございます。
マルチキャストについてですが
winsock1,1ではoption扱いで正式サポートではなく
2,0ではサポートされてるようなんですが、いい情報がまだ得られていません。
もうちょっと調べて、うまくいったら報告します。
(今windowsでやってるんで68userさんはあまり興味ないかもしれませんが)

No. 578 # るん [E-mail] 1999/12/02 (木) 19:46
はじめまして。
「ネットワークプログラミングの基礎知識」読ませていただきました。
HTTPの初心者のため、大変勉強になりました。

この度proxyサーバを使って、URLを取ってくるシステムを開発しているのですが、うまく動作しません。
GETのレスポンスで、ヘッダでは「200 OK」が返ってきているのに、ヘッダしか取出せません。どんな原因が考えられるでしょうか。

環境は以下の通りです。
proxyサーバ:NetscapeProxyServer
取出すURLのあるサーバ:Apache 1.3.9

No. 579 # 68user 1999/12/03 (金) 02:50
> ヘッダしか取出せません。
    - どういうリクエストを送ったのか
    - 環境 (Windows など)
    - 何を実行したのか (telnet でやったとか perl で書いたとか)
    - どの URL を試しても同じ結果になるのか
    - 実際のコードは (perl と C 以外わかりませんけど)
などがわからないと何とも言えませんが、とりあえず telnet で
proxy サーバに繋げて、
    GET http://www.yahoo.co.jp/ HTTP/1.0
    Host: www.yahoo.co.jp
    (空行)
を試してみて下さい。

> (今windowsでやってるんで68userさんはあまり興味ないかもしれませんが)
最近はネットワークプログラミング自体に飽きてしまい、
3D にはまってたりします(^^;

ちょいと紹介しときますが、参考にしたのはこのサイトです。
とてもわかりやすく書かれているので、興味のある方はぜひ。
    http://www.cim.pe.u-tokyo.ac.jp/~mitani/Java/java3d/index.html

# 長年の夢であったポリゴンをぐりぐり回すのが実現できてうれしい。
# 今はテクスチャ貼ったりシェーディングかける方法を模索中…。
## ここらへんを解説してるサイトないかしら?

No. 580 # るん 1999/12/03 (金) 17:38
返事ありがとうございます。

> - どういうリクエストを送ったのか
> - 環境 (Windows など)
> - 何を実行したのか (telnet でやったとか perl で書いたとか)
> - どの URL を試しても同じ結果になるのか
> - 実際のコードは (perl と C 以外わかりませんけど)

環境:UNIX
言語:C言語でproxyサーバにはsocket通信でリクエストを送っています。
具体的には以下の内容をsendで送っています。
GET http://www.yahoo.co.jp/ HTTP/1.1
Host:www.yahoo.co.jp
(空行)

※proxyサーバが社内のマシンしかアクセスできない設定になっているので、
    実際にはwww.yahoo.co.jpの部分は社内のhost名を指定しています。

>> ヘッダしか取出せません。

この後、もうちょっと調べてみると、
一度目のrecvでレスポンスヘッダが送られてきて、
二度目のrecvでエンティティボディが取出されることがわかりました。
NetscapeProxyServerの仕様なのでしょうか。

あと、レスポンスヘッダ文字列の大文字小文字ですが、
本などでは"-"の後の文字は大文字なのですが、
上記の環境で行うと小文字になります。
(例)「Last-Modified」→「Last-modified」など。。。
これもNetscape Proxy Serverの仕様なのでしょうか。

御存知のことがあれば教えてください。

No. 581 # 68user 1999/12/03 (金) 18:15
> 一度目のrecvでレスポンスヘッダが送られてきて、
> 二度目のrecvでエンティティボディが取出されることがわかりました。
十分な量のバッファを用意して、十分なサイズを指定したからといって、
一度の recv で全てのデータを取り出せるという保証はありません。
これは read でも同じです。
    http://X68000.startshop.co.jp/~68user/net/c-open.html
の最後には
> もし指定したファイルの長さが 600 バイトなら、
>  1回目のループ: read_size == 256
>  2回目のループ: read_size == 256
>  3回目のループ: read_size == 88
>  4回目のループ: read_size == 0
と書きましたが、これは相手がファイルシステムだからであって、
ソケット経由だと、
    char buf[1000];
    read(socket,buf,sizeof(buf));
としても、
    1回目のread: read_size == 10
    2回目のread: read_size == 20
    3回目のread: read_size == 1
    4回目のread: read_size == 0
などとなる可能性があります (この例ではデータ量は31バイト)。

要は IP パケットが細切れに送られてきたとき、read(recv) すると
要求されたサイズのデータが届くまで待つのではなく、そのときまでに
受け取っているデータを返すわけです。例えば echo サーバで、
    $|=1;
    print(SOCKET,"a"); sleep(5);
    print(SOCKET,"b"); sleep(5);
    print(SOCKET,"c"); sleep(5);
とすると、細切れなデータが送られるわけです。

> (例)「Last-Modified」→「Last-modified」など。。。
Netscape Proxy Server がわざわざ変換しているのか、
WWW サーバがそういうヘッダを返すのかはわかりませんが、
規格上は大文字小文字は区別されません (RFC のどこかに書いてあるはず)。

Last-Modified/Last-modefied/LaSt-MODIfied は同じように
扱わないといけません。

ちょっと用事があり、今日の夜から数日間 返答できませんのでよろしく。

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