68user's page 掲示板

Prev< No. 501〜550> Next  [最新発言に戻る] [過去ログ一覧]
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() と同じになります。

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