bin - みる会図書館


検索対象: UNIX MAGAZINE 1999年12月号
23件見つかりました。

1. UNIX MAGAZINE 1999年12月号

連載 UNIX Communication Notes 図 2 スクリプト install の実行 # . /install ようこそ、 ICAP (ICAT CA Package) へ。 ・ sendmail ・ Per1 ( ver .4 .036 以上 ) ・ Web プラウサ (netscape, mosaic 等 ) ・ NSCA httpd 行なう必要があります。 I CAP を利用する為には、あらかじめ以下のソフトウェアのインストールを Web プラウサを起動するコマンドのパス名を入力して下さい。 (default : /usr/etc/chown) /usr/sbin/chovn chown コマンドのパス名を入力して下さい。 (default : /bin/chmod) /usr/chmod chmod コマンドのパス名を入力して下さい。 (default : /usr/ucb/Mai1) /usr/bin/Mai1 Mai1 コマンドのパス名を入力して下さい。 (default : /usr/ucb/tail) /usr/bin/tail tail コマンドのパス名を入力して下さい。 (default : /bin/ed) ed コマンドのパス名を入力して下さい。 (default : /usr/lib/sendmail) /usr/sbin/sendmail sendmail コマンドのパス名を入力して下さい。 (default : /usr/local/bin/perl) /usr/bin/perl Per1 コマンドのパス名を入力して下さい。 インストール作業を続けますか ? (default: yes) ビスやユーサ向けサービスへのアクセスをコントロールする機能はあります。 ) ( サービスポートを別にしない場合でも、 IP アドレスによって管理者向けサー 起動しておく必要があります。 けサービスに対する不正アクセスを防止したい場合には、 httpd をもう 1 つ これらのサービスポートを別にし、ポートフィルタリングによって管理者向 さらに、 ICAP には管理者向けサービスとユーサ向けサービスがありますが、 [ 注 ] $ServerRoot とは WWWサーパのトップディレクトリを意味します。 クリンクを許していること。 (F0110wSym1inks を設定していること ) ・ $ServerR00t/{cgi—bin,htdocs} ディレクトリ内のファイルにシンポリッ リプトとして、 Web プラウサから実行可能であること。 ・ $ServerRoot/cgi—bin ディレクトリにおいた実行ファイルは、 CGI スク ・ $ServerRoot/cgi—bin ディレクトリが存在していること。 ことを確認して下さい。 また、このスクリプトを実行する前に、次の条件で httpd が起動している yes) no 管理者向けサービスとユーサ向けサービスでポートを別々に用意しますか ? /usr/local/bin/netscape) (default : (default : UNIX MAGAZINE 1999.12 15

2. UNIX MAGAZINE 1999年12月号

連載 / IJN Ⅸ便利帖ー① リスト 6 改良版 search. sh # ! /bin/sh echO "Content—type : text/html" echo " " eval $QUERY_STRING KEY= ( echo $key ー perl —e while ( く > ) { print $ ー NAMAZU_CONF=/home /mi yas 土 t a/publ i c _html /nikki /b 土Ⅱ /. namazurc /usr/local/bin/namazu —h -f $NAMAZU—CONF $KEY ハ sed -e ) s/\ . comment//' \ メントが追加されたことカ蔀薩忍できます。 こで、今回追加したコメントファイルを前回作成した 全文検索の対象に含めてみましよう。 前回、検索にヒットした日記ファイルをきれいに表示す るために、 namazu コマンドカ咄力した検索結果にちょっ とした細工をする search. sh を作成しました。この CGI プログラムは、 namazu が出力した検索結果を sed て処 理することで、日記ファイルを直接アクセスせすに正しく nikki. sh を通してから閲覧できるようにしたものです。 今回のコメントファイルか検索にヒットした場合は、コ メントファイルそのものではなく、もとになった日記ファ イルを nikki. sh に通してから閲覧できるようにする必喫 があります。そのために search. sh をリスト 6 のように 匿します。 このリストの最後から 2 行目で sed コマンドに渡され ている引数が今回改造した部分です。これによって、コメ ントの内容かオにヒットした場合でも、リンクをクリッ クすれは正しくもとの日記ファイルか表示されるようにな ります。 これで、日記にコメントを追加する拡張は完成です。 伝言板システム 前節で作成した comment. cgi を応用して、もとになる 日記は書かすに、コメントだけを蓄積していく仕掛けを作 れば伝言板ができそうです。家庭内の伝言板といえば、冷 蔵庫のドアや電話の近くに置かれたホワイトボードなどが 思い浮かびますが、今回はこれを電子的に実装します。 UNIX MAG AZINE 1999.12 リスト 7 DirectoryIndex の言聢 DirectoryIndex index. html index. cgi リスト 8 . htaccess の内容 Options ExecCGI AddType application/x—httpd—cgi cgi まず、伝言板用のディレクトリを作っておきます。 um% mkdir -/public—html/dengonban このシステムでは、 http://localhost/-miyasita/ dengonban/ へのアクセスだけで、伝言板の内容を見た り、新しい伝言を書き込めるようにするつもりです。それ には、伝言板の内容を表示したり、新しい伝言を受け付け て保存する CGI プログラム index. cgi をこのディレク トリに置いておきます。そして、上記の URL でアクセス があったときに、この CGI プログラムを実行した結果を WWW プラウザに送るようにすればよいのです。 httpd の設定ファイルである /etc/httpd/conf/srm. c 。Ⅱ f のなかにリスト 7 のような行があれば、 index. cgi も index. html と同様に、ディレクトリ名だけのアクセス時 に表示するファイルとして認識されます。私の言算機にイ ンストールした httpd では、 srm. conf に最初からこのよ うな言当がありました。リスト 7 のような記述がなけれ ば、スーパーユーザーの権限でこれを言当主し、 /etc/rc. d/ init. d/httpd を reload という引数を付けて実行する ( 動 作中の httpd にこの変更を通知する ) 必要があります。 次に、伝言板のディレクトリ (-/public-html/dengon ban) でも日記帳システムと同様に CGI プログラムを実 行する必要があるので、リスト 8 のような内容の . htac - 103

3. UNIX MAGAZINE 1999年12月号

図 3 スクリプト install の実行 ( 続き ) 連載 /UNIX Communication Notes (default : /usr/local/cgi—bin) /usr/local/www/cgi¯bin WWW サーバ上で CGI プログラムを置いているディレクトリ名を、絶対パスで入力して下さい。 (default : /usr/local/htdocs) /usr/local/www/data WWW サーパ上でホームページを置いているトップディレクトリ名 ( $ DocumentR00t ) を入力して下さい。 (default : /usr/local/etc/admin—httpd) /usr/local WWW サーバを展開したディレクトリ名 ( $ ServerR00t ) を入力して下さい。 WWW サーパの実行ユーザ ID を入力して下さい。 [ 参照 ] /usr/local/conf/httpd. conf ファイルにて User 変数に指定した値を入力して下さい。 (default : nobody) www httpd のポート番号を入力して下さい。 (default : 8000 ) 80 ICAP ホームページを置くディレクトリ名を入力して下さい。 [ 注意 ] /usr/local/www/data からの相対パスで入力して下さい。 (default : (a) ca ICAP の管理者を登録します。 ICAP 管理者の「ログイン名」と「パスワード」を入力して下さい。 ログイン名を入力して下さい ( 8 文字以内 ) 。 (default: ca-admin) パスワードを入力して下さい ( 8 文字以内 ) 。 もう一度パスワードを入力して下さい。 次に示すようなシンポリックリンクを張ります。 ca—admin ・ /usr/local/www/cgi-bin/* → /usr/10ca1/ICAP/cgi¯bin/* → /usr/10ca1/ICAP/htm1 ・ /usr/local/www/data/ca インストール作業を続けますか ? (default: yes) yes /usr/10ca1/ICAP/bin ディレクトリを整備します。 /usr/10ca1/ICAP/cgi-bin ディレクトリを整備します。 /usr/10ca1/ICAP/etc/icap. conf ファイルを更新します。 /usr/10ca1/ICAP/etc ティレクトリのパーミッション変更 ICAP のユーサ向けメニューの URL は、 http://foo.bar.ac ・ jp/ca/index. html です。 /usr/local/bin/netscape を起動します。初期設定を行なって下さい。 ICAP の管理者向けメニューの URL は、 http://foo.bar.ac ・ jp/ca/admin/index. html です。 〇 〇 5. 必喫なファイルのオ褓内 竟に応じた値を入力していけば、 ICAP のインストー ルは終了する。 意 3 ンストールする UNIX システムのログイン名やパスワードと づいてアクセス制御をおこなっている。もちろん、 ICAP をイ 者用インターフェイスは、このログイン名とパスワードにもと のデータベースにアクセスするときに使われる。 ICAP の管理 ン名」と「ノヾスワード」 " は、ⅥーⅥーⅥーシステム経由で ICAP インストールの過程で登録 - す・る、、 ICAP 管理者の「ログイ インストールするシステム上で、管理者用インターフェイ 意 4 異なっていてもまったく間題はない。 16 スを提供する httpd のホートと、一イ殳ューサー用のインターフ ェイスを提供する httpd のポートとを別にすれは、ポート・フ イルタリングの手法を用いたより強力なアクセス制御が可能に なる。 install 夫行・時の「管理者向けサービスとユーザ向けサー ピスでポートを別々に用意しますか ? 」の質問に対して、 yes と答えれは、そのための設定もおこなうことができる。 CA の言聢 ICAP のインストールカ冬ると Web プラウサが自重加勺 こで CA に関する設定をおこなう。 に起動されるので、 最初に ICAP の管理者用のページか表示される ( 図 4 ) 。 CA 管理者がますしなけれはならないのは、「 1. CA の 初期設定 ()A の立ち上け ) 」である。 こでは、 CA そ のものの設定をおこなう。 UNIX MAGAZINE 1999.12

4. UNIX MAGAZINE 1999年12月号

連載 UNIX Communication Notes 図 1 パッケージ堋者の彖 要、フ , イル = 編集表示 - ジャン乙 : 重 pnm 町 1 記 or 、 ' ー寺 : 気 . 所 0 =. 0 ・ 0000. = 0 ・ 0.0 , 、・ jp ー 0 ・ i - 、 0 ー、 000 、 0000 ag 市炊府 ( 」午可ま対弓可カ要です に叩 2 ・ー common ね「平使用に関する登録申請類 REGISTRA 引 ON ) 入力された個人調ま、バージョンアップ . バグ情、どをわらせすメこ使用する場合カ物リ 子メールアドしス ます . あらかじめ : 7 承ください . ⅵい をダウンロードする。 ・ ICAP V2.33 (for FreeBSD 2.2.5 ) ー 00 : 气 なよ、日本こ在住する日本人ですか ? ! ⅵれ、 「利用劇を道キしますか ? らダウンロードする。 後に図 1 のフォームか表示されるので、ここで登録してか ら、利用者登録を求めるようになっている。利用規程の最 パッケージに含まれるモジュールに配布条件があることか ICAP を公開しているが、輸出規制の対象であり、かっ は、開発成果を多くの人に使ってもらうことを目的として をよく読み、その主旨を十分に理解してはしい。 ICAT で すると、最初に「 ICAP 利用規不物か表示される。これ これらのパッケージにリンクしたアンカーをクリック 中止ということになりかねない。 としているため、 当剥寺 : には、 意 2 でたらめな情報が入力されたりすると、公開 インでの公開は、利用者登録が正しくおこなわれることを前提 正しい情報を入力していただきたい。オンラ 次に、 ICAP 以外のソフトウェア・パッケージをい その他のソフトウェア # tar zxf icap2.33—freebsd2.2.5—portion. tar ・ gz # tar zxf icap2.44—common. tar ・ gz # cd /usr/local 以下のようにす川ま、 /usr/local/ICAP に展開される。 入手したパッケージを適当なディレクトリに展開する。 Web プラウサ、 Perl の 3 つのソフ くつかインストールする。 ICAP の稼動に必要なのは、 トウェアである。 ⅥーⅥーⅥーサーノヾー UNIX MAGAZINE 1999.12 WWV•,I サーパー ICAP では、インターフェイスとして WWW を利用 するため、 CA を構成するホストに WWW サーバー・ソ フトウェアを導入する必要がある。今回は、 Apache 1.3.9 を使うことにする。 FreeBSD の場合は、 ports を使えばインストールも容 易である。その他のプラットホームについては、 ・ http://www.apache ・ org/ から配布パッケージを入手してインストールする。 インストールしたら、 ICAP のために CGI プログラム が使えるように設定する。 宜設定する。 クトリ " として指定し、工鼬竟に合わせてオプションを適 クトリを httpd.conf ファイルなどで、、 cgi-bin ディレ 行できるようにする。それには、上記で作成したディレ イルを、 Web プラウサから CGI スクリプトとして実 2. $ServerRoot/cgi-bin ディレクトリに置いた実行ファ レクトリを作成する。 ンポリック・リンクを削除し、あらためて cgi ー b ⅲディ シンポリック・リンクされている。そこで、いったんシ の Apache の成疋では、 cgi-bin は cgi-bin. default に 1. $ServerRoot/cgi-bin ディレクトリを作成する。標準 実行に必要である。 ICAP のマニュアルには、 Perl 4.036 perl は、 CGI プログラムとして作られたスクリプトの Perl なる。今回は、 Netscape Communicator 4.61 を使う。 ICAP のインストールの過程で Web プラウサが必要に Web プラウサ うかを石忍しておく。 最後に、設定した WWW サーバーが正しく動くかど Options F0110wSymIinks レクトリについて次のように設定すればよい。 たは access. conf などのファイルで、上記 2 つのディ らが正しく動く必要がある。それには、 httpd.conf ま レクトリにシンポリック・リンクを用意した場合、それ 3. $ServerRoot/cgi-bin および $DocumentRoot ディ 13

5. UNIX MAGAZINE 1999年12月号

図 10 ディスク吏用容量を監視する言聢例 # procfs はつねに 100 % なので無視 /*procfs/ # 使用率が 90 % を超えたら通知 ノヾターン 1 ノヾターン 2 ノヾターン 3 図 11 crontab に追加する lgnore mail=root 45 * * * * root /usr/local/bin/swatch —c /usr/local/etc/swatchrc—df -p /bin/df 2 > & 1 >/dev/null ログ監視の方針 ログ監視の方針について説明しておきます。方針は大き く分けて次の 2 つです。 ・特定のパターンにマッチするものを通知する。 すべてのパターンにマッチしないものを通知する。 前者の場合は、図 5 や図 8 て示したように ノヾターーン にマッチするログを管理者に通知します。これは、監視す るログがすべて分かっているときには便利です。しかし、 重要な意味をもっログを見落とす可能性もあります。 後者の場合は、無視してもよいログのパターンを記述 し、それらにマッチしたときのアクションを、、 ignore" に 設定します。そして、、、無視できないものは未のあるロ グだ " と判断し、管理者に通知します。設定ファイルは次 のように言当します。 lgnore lgnore lgnore mail=root リスト 1 再を可能にするパッチ る ) 。こうなっては無意床です。どちらの方針を選ぶかは、 ポックスを飾る本期兼に見えるようになります ( 経験者は語 のメールか届くと慣れてしまい、、、警告 " の文字がメール 想的には後者のはうか望ましいのですが、毎日大量 通知が届いてしまうという欠点があります。 、無視できるログ " が分かるまでの期間、管理者に大量の この方針では、重要なログを見落とすおそれは減るが、 皆さんの判断におまカせします。 使用例 最後に、 swatch の使用例を紹介します。 ます、 /var/log/messages ファイルを監視する例で す。図 9 の内容のファイルを作成し、これを /usr/local/ etc/swatchrc-const として保存します。次に、 /etc/rc. local の末尾に次の行を追加します。 echO ” swatch constant monitoring /usr/local/bin/swatch —c - /usr/local/etc/swatchrc—const - —r 02 : 01 -t /var/log/messages この例は、ログファイルのローテーション処理が午前 2 時におこなわれることを前提としています。下線て示した 部分は、実際のローテーション処理日骸リの設定に合わせて 適当に変更してください。 次に図 10 の内容のファイルを作成し、 /usr/local/etc /swatchrc-df として保存します。そして、図 11 のエン トリを /etc/crontab に追加します。 今回は、 FWTK のファイアウォール上で swatch を 使用する例を紹介しました。監視対象のログの不頁は、サ イトによって異なるはすです。それぞれの要求や環境に合 わせて適当に変更して利用してください。 ☆ 次回は、もう 1 つのログ監視プログラム logsurfer に * * * swatch . 01d swatch Sat Sep 25 23 : 14 : 45 1999 Wed Oct 20 17 : 01 : 23 1999 * * * 100 , 105 * * * * 100 , 107 $SIG{' INT'} $SIG{'QUIT'} $SIG{'TERM'} ついて説明します。 quit ) UNIX MAGAZINE 1999.12 ( しらさき・ひろお ) 31

6. UNIX MAGAZINE 1999年12月号

FreeBSD はパッケージでインストールできる 図 3 こで、インストール先のディレクトリをあらかしめ作成し ておきます。 swatch をインストールする手順を図 4 に示 します。これは r 。。 t 権限でおこないます。インストール・ プログラムの質間には、下線で示したように答えます。 セットアップ まず、簡単な設定ファイルを書いて swatch の練習を してみましよう。 図 5 の内容のファイルを作成してください。このファ イルを、、 swexmpl" という名則てイ呆存し、 swatch コマン インストール ドをバックグラウンドで実行します (root ではなく、通 FreeBSD にインストールする場合は、パッケージを利 常のユーサーの権限でおこないます ) 。 用するといいでしよう。 /stand/sysinstall を夫行し、パ ッケージのカテゴリーー : 覧から、、 security" お尺します。 % /usr/local/bin/swatch —c swexmpl \ —t /var/log/messages & セキュリティ関連ツールのリストか表示されるので、その なかから、、 swatch ー 2.2 " を尺し ( 図 3 ) 、インストールを このように -t" オプションを指定すると、、、 tail ー「と 実行します。 同様にファイルの終端まで読み込んでも処理を終えすに パッケージからインストールしない場合や BSD / OS に そのまま次のメッセージ行カされるまで待ち続けます インストールする場合は、次の URL からソースパッケー ( 内部では、、 tail ー「を実行しています ) 。さらに、次のよ ジをダウンロードします。 うに su コマンドを実行します ( 引数の一を忘れすに付 けます ) 。 ・ ftp://ftp.stanford.edu/general/security-tools/ swatch/swatch-2.2. tar. gz % su Password : swatch は Perl で書かれているので、インストールに Don't 10gin as root , use the su command. は PerI 4 以 . E が必要です。現在の構築竹業べースである FreeBSD や BSD/OS には標準で伺属しているため、新 こで、 r 。。 t 宛に届いているメールをチェックします。 たにインストールする必要はありません。ソースパッケー # mail ジをダウンロードし、展開するとディレクトリ swatch- Subject 行に、、 * * ATTENTION * * " と書かれたメー 2.2 が作成されます。そのなかにある sw-actions. pl とい ルが、自分のアカウントから届いているはすです。、、こん うファイルの地寬こ次のような部うゞあります。 なメールを送った慮えはないぞ " と思いつつ開いてみると、 $MAILER = "/usr/lib/sendmail" ・ 本文にはさきはど su したときのログが 1 行だけ書かれて $WRITE "/bin/write" います ( 図 6 ) 。 この 2 行の定義を FreeBSD や BSD/OS の環上竟に合 このメールは、さきほど起動した swatch が送ったも わせるために、次のように変更します。 のて、す。、、 su: rascal to . " の行だけが送られてきたの $MAILER = は、この部分か図 5 のパターンにマッチしたからです。ロ "/usr/sbin/sendmail " ・ $WRITE "/usr/bin/write" グファイル messages に言求されたログがこのパターンに マッチしたため、図 5 の右側に書かれているように swatch パッケージにはインストール・プログラムが含 ro Ot 宛にメールが送られたわけです。 まれているので、インストール作業はあっけないはど簡単 です。ただし、このプログラムは、ディレクトリがない場 ちょっと強引ですが、とりあえす設定ファイルの書き 合に自重加勺に作成してくれるほど親切ではありません。そ 方は分かったことにしましよう。ここでは、、、パターンに Systet•1 secur はリ software . [/usr/ports/net/queso ー VusrZport s/net/SHbtcpduHp ] ー / S 「 / ort / ト幟Ⅱ ZSHtpd ー Vusr>ports/secur いリ / s trf ー 041 tZusrZporfs/net/sniffitY t/usrzportS'Hbone/speak—freelyJ ー / 社 sr / or を & / れ et / s を robe 】 [/usr/ orts / & ec r ーリ / 0 ] vusr/ports/security/tcp—wrapper) [ れ r / po 「 t s/net /tcpshowl t"usrzport を / ま ec 収 r i を y / x 10 を 1 CanceI { ー w 嶽いヨい 2 。 2 「第多暑 l/usr/ orts/securit /swatchl 9 SiMple i•nTCHer れれ fi ーま′ 26 UNIX MAGAZINE 1999 ユ 2

7. UNIX MAGAZINE 1999年12月号

図 4 sh insta11. sh # mkdir /usr/10caI/man/man5 # mkdir /usr/10ca1/man/man8 # mkdir /usr/local/lib/perl Vi sw_actions . pl cd swatch—2.2 # gunzip —c swatch—2.2. tar. gz ー tar xvf swatch 2.2 のインストール Enter the directory where swatch : - ・の第一可徂ー物 ←ノヾッケージを展開 ← sendmail のノヾスの定義を手多正 あらかじめインストール先のディレクトリを作成しておく ←インストール・プログラムを実行 is t0 be installed (default '/usr/local/etc') /usr/local/bin What user should own the installed swatch files? (default 'root' ) What group should own the installed swatch files? (default 'wheel' ) ← swatch コマンドのインストーノレ先 ディレクトリを指定 ←リターンを入力 What should the permissions be for the installed swatch script? (default ) 755 , ) What should the permissions be for the installed swatch libraries and man pages? (default ' 444 ' ) 材 Enter the name of the directory where the perl library files are located (default '/usr/local/lib/perl ' ) Enter the name of the directory where you wish to insta11 the swatch library files (default '/usr/local/lib/perl' ) What directory should the swatch man pages be installed (default '/usr/local/man' ) What should the extension be for the swatch program manual page? (default ' 8 ' ) What should the extension be for the swatch configuration file manual page? (default ' 5 ) ) Per1 library: /usr/local/lib/perl Here is what I have . binary location: /usr/local/bin manual page location: /usr/local/man program manual page extention : 8 configuration file manual page extention : Swatch data file permissions : 0444 program permissions : 0755 owner : root Swatch group : wheel Swatch Swatch Swatch Swatch Swatch Swatch Are these values okay (y or Ⅱ ) ? y Are you ready for me tO start the installation (y or Ⅱ ) ? y 5 swatch . . . done . sw—actions . p1 ... done . sw—history. pl ... done . swatch. prog. man.... done. swatch . conf . man . . . dO e . マッチしたらメールが送られてくる " と憶えておきます。 そして、 lnstalling lnstalling lnstalling lnstalling lnstalling UNIX MAGAZINE 1999 ユ 2 % swatch —c conf-file —t /var/log/messages & ←インストール終了 と実行しておけは、ログファイルを監視してくれることも 分かりました。しかし、 す。それは、 このままでは大きな問題がありま 27

8. UNIX MAGAZINE 1999年12月号

連載 / UN Ⅸ便利帖ー① リスト 3 コメント表示のための自加 if [ -r $COMMENT_FILE ] then echo " く hr>" echo " く h2>Comments : く / h2 > " sed —e 'SF$/ く p>/' $COMMENT—FILE 図 5 コメントが表示された 戻る次再込オムを悃 2 印刷保護 、を ' ブックマグ↓場所ン叩カ 10C 0 7 ツ田ねⅲ水 k れ的国 . ? 、 ' EAR , 1393 & MONTH -10 製・連サイ 999 / 10 / 15 んだん物物源しくなってきたようだ . そのせいか第く自が貧めたので単く出効する . のまま早く出したかっのたがそううまくはいがれやはリ 22 時こらに宅する . 図 3 ありがとう " ページ 第製宗第ツガ羸 の次第再読込ホーム物索権ト印刷第保護 ブックマーグ 4 場所叩。 ca Ⅲ 7 iy 部ねⅲ社ド”ヤ語 4 8F % A4 , = / 守′関サイト -Tha ks ryo 00mm5 ・ 図 4 httpd のエラーロク um% tail ー 1 /var/log/httpd/error—log Precedence problem : open CFILE should be open(CFILE) at /home/miyasita/public—html/=> nikki/bin/comment ・ cgi line 7 . ( 誌面の都合上、で折り返しています ) はならないので、 chmod コマンドで実行属性を付けてお きます。 1 加 % chmod + x -/public—html/nikki/bin/comment. cgi それではさっそく家族を呼んで、図 1 の状態のままに なっている netsc 叩 e に名前とコメントを入力してもらう ことにします。図 2 はたかしくんにコメントを入力しても とグループ nobody に対して書込みを許可します 2 。 らったところです。 グループの変更には chgrp コマンドを使いますが、私 そして [ send ] ボタンをクリックしてもらうと、みごと に、、ありがとう " ページが表示されました ( 図 3 ) 。 (miyasita) はグループ nobody には属していないので、 スーパーユーザーの権限が必要になります。また、 10 月 保存されたコメントを表示するイ督はみをまだ作っていな ターミナルから直接ファイルを覗いてみます。 以外の日記にもコメントを書き込むかもしれないので、日 いので、 記を保存するすべてのディレクトリのグループとパーミッ 1. % cd -/pub1ic—htm1/nikki/1999/10 ションを変更しておくことにします。 um% c at 15. comment cat : 15. comment : NO such file or directory um% cd -/pub1ic—htm1/nikki/1999 um% su おや、ファイルがありません。そこで、前回と同しよう Password: に httpd が出力したエラーログを見てみます ( 図 4 ) 。す # chgrp nobody * ると、エラーログには「 CFILE はオープンされているべ # exit um% chmod ug + * きである」という言当求があるので、 CFILE がオープンで もう 1 度、たかしくんに図 2 のコメントを入力しても きなかったのではないかと考えられます。 CFILE とは、 リスト 2 の 7 行目で追加書込みモードでオープンしたは らってから、 [ Se Ⅱ d ] ボタンをクリックして図 3 のページ を表示します。そしてコメントファイルを覗いてみると、 すの、コメントファイル用ファイルハンドルです。 次のようにきちんと保存されていました。 前回も説明したように、 httpd は nobody というユー サー、同しく nobody というグループの権限で重川信して um% cd -/pub1ic—htm1/nikki/1999/10 います。そのため、 httpd がファイルを作成するディレ um% cat 15 . comment from たかし : もっと早く帰ってきてね。 クトリには、 nobody というユーサーか nobody という グルーフ。のどちらかに対して書込みの許可が必要になりま す。そこで、コメントファイルを保存するディレクトリ の所有グループを nobody に変更し、ユーサー miyasita mments: m たかし : もっとくイてきてね . 刊 d ( ommen お her 儲 um% 2 この変更は計算欟第常畤ネットワークにオÆされていたり、自分舅トに もユーサーかいる場合などには慎重におこなってください。 101 UNIX MAGAZINE 1999.12

9. UNIX MAGAZINE 1999年12月号

連載 / IJN Ⅸ便利帖ー① 図 8 今回使用したファイル成 気を ' ブッ , グマクこ場所声叩カ 10 こ引 hO % 7e ya 引はのを , 0 , 103 ⅳ ー戻る ーを次第再読込第ポーも験耋“仲砂 図 9 伝言板に伝言を書き込む dengonban ¯/public—html nikki 父らな 図 10 伝言か新された 3 武 0 日もくなります . 先に風呂に人っててて《ださい . 、明日もくなります . 先に呂に . 入って価ててくさい、 鑒 [ 。証父ちゃんれ 9 四 = 42 ) 、ブックマーグ↓場所叩 0 い。 sv % な Y ”おん印。いⅣ 戻る 「第再読込ホーム検素 S 面 ! 0 um% chmod ug + w me s s age s # exit # chgrp nobody messages Password : um% su bin 印刷 dd ・ dd. comment ・・ search. sh comment. cgi ・ nikki. sh messages ・ index. cgi ・ htaccess 日記ファイル コメントファイル ・日記閲覧プログラム ・コメント受付け / 保存用 CG ワ。ログラム 検索用 CG プログラム ・ディレクトリに関する設定ファイル ・伝言板用の CG プログラム 伝言板ファイル 保護 《園運サイ 関連サイー い : し物ツ朝 準備ができたところで、この CGI プログラムにアクセ スして伝言を書き込んでみます ( 図 9 ) 。そのあと [Submit Query ] ボタンをクリックすると、新しい伝言が追加され UNIX MAGAZINE 1999 ユ 2 て図 10 のように表示されました。 念のために、伝言がきちんとファイルに保存されている ことも確かめておきましよう。 um% cat -/public—html/dengonban/messages From: 父ちゃん ( 99 / 10 / 19 23 : 25 : 42 ) 明日も遅くなります。先に風呂に入って寝ててください。 本格的な伝言板であれば、書き込まれてから何日カを した伝言は自重加勺に消去するようなイ督はみも必要になるで しよう。これは、伝言とともに言求されている日該リをもと にして削除すれはよいのですが、この伝言板はごく小規模 なものなので今回は省略しました。 やや大雑把なガ去ですが、旧い伝言を表示しないように するには、 messages ファイルの最後の数ヨ・一行ぶんだけを 表示させるのが簡単でいいかもしれません。これは、 Perl の関数を使って行数を数えながら表示してもいいですし、 tail コマンドの助けを借りても見できると思います。 この伝言板システムでも、日記帳システムのコメント と同様に、複数の人か 1 司時に書き込んだ場合の処理はして いませんし、ほかの人の名前で伝言を書き込めてしまいま す。このあたりについては、前回に引き続いて皆さんにお 缶をします。 105 ( みやした・けんすけ岡山工駢斗大学 )

10. UNIX MAGAZINE 1999年12月号

連載 / IJN Ⅸ便利帖ー① リスト 1 コメント欄を追加した nikki. sh 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 # ! /bin/sh echO "Content—type : text/html" echo eval ( ech0 $QUERY—STRING ー sed ' y/&/ / ' NIKKI_DIR=/home/miyasita/pub1ic—htm1/nikki NIKKI_FILE=$NIKKI_DIR/$YEAR/$MONTH/$DAY COMMENT_FILE=$NIKKI_FILE. comment if [ -r $NIKKI_FILE ] then echo echo echO echo echO echo echo sed echo e ChO e ChO ChO e ChO echO echO echo echo echo echo exit else echo exit fi " く html> " ”く head>" " く title>" $YEAR/ $MONTH/ $DAY ”く /title>" " く body>" " く 1 > " $YEAR/$MONTH/$DAY " く / hl > " -e 's/\( く img ・ *src="\)/\l.. \/photo\//g' $NIKKI-FILE " く h2>P1ease add comments here: く /h2>" " く form action=\"comment . cgi\" method=\' get\ " > " "From: く input type=\"text\" name=\"from\" size=\"20\"> く br>" "Comments: く textarea name=\"comment\" rows=\"5\" COIS = \ ” 80 \ ” > " " く /textarea> く br> " '<input type=\"hidden\" name=\ "file\" value=\ "$COMMENT-FILE\">" " く input type=\" submit\" va1ue=\"Send\'l>" 1 "Fi1e not foundl 0 " く /html>" " く /body>" ”く /form> " input タグでなく textarea タグを使います。このタ UNIX MAGAZINE 1999.12 最後に、 30 行目でコメントを送信するためのボタンを ログラムに渡すために使っています。 では、コメントを保存しておくファイルの名前を CGI プ 引数として渡したいような値があるときにイリです。 は、ユーサーには見せたくないが、 CGI プログラムには います。この部分はプラウザには表示されません。この型 その次の input タグ ( 29 行目 ) は hidden 型になって ぞれ from と comment という名前を付けておきます。 CGI プログラム中で区別するために、記入欄にはそれ もった文字入力用のポックスを作ってくれます ( 27 行目 ) 。 グは rows て指定された行数と cols て指定された桁数を 作って f 。 rm タグを終了します。 CGI プログラムはまた元成していませんが、日記の見 栄えがどう変わったか確認してみましよう。前回と同様 に netscape で http://localhost/-miyasita/nikki/に アクセスし、 10 月 15 日の日記を閲覧してみます ( 図 1 ) 。 まだ [ Send ] ボタンをクリックしてもエラーになるだけ ですが、意図した表示になっていることカ蔀忍できます。 コメントを受け付ける CGI プログラム 前回は、日記の検索をおこなう CGI プログラムを、 sed や perl の助けを借りながらシェル・スクリプトとして作 成しました。今回は、初めから perl ( バージョン 5 ) で作 99