etc - みる会図書館


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

1. UNIX MAGAZINE 1999年11月号

特集 Web で日記帳システムを作ろう 図 41 /etc/fstab へ追加する内容 /dev/sdal /mnt/flash msdos noauto ,user 0 図 42 撮影された写真一覧 um% ls /mnt/f1ash/qvimg02/camera /mnt/f1ash/qvimg02/camera: 99906001. jpg 99906004. jpg 99906007 99906002. jpg 99906005. jpg 99907001 99906003. jpg 99906006. jpg 99907002 ・ JPg ・ JPg ・ JPg 99A06001 99A18001 99A18002 0 ・ JPg ・ JPg ・ JPg camera . qVS html/ preview/ # mount /dev/hdal on / type ext2 (rw) none 0 Ⅱ /proc type proc (rw) /dev/hda6 on /home type ext2 (rw) /dev/hda5 on /usr type ext2 (rw) /dev/hda8 0 Ⅱ /var type ext2 (rw) /dev/sdal on /mnt/flash type msdos # 1s /mnt/flash /mnt/flash : qvimg02/ 上の mount コマンドの出力の最後に、ちゃんと /dev/ (rw) UNIX MAGAZINE 1999.11 るときれいです。 20 空白のところは適当に TAB を層 t て、ファイル内の上の行と桁を揃え 最後にある 2 つの 0 は、 1 つ目が dump コマンドで 未しています。 をもたないユーサーでもマウントできるようにすることを マウントされないことを意味し、次の user は root 権限 る引数を表します。最初の noauto は OS の起測時には す。その次の noauto,user は mount コマンドに渡され デバイスの種別、というところまではさきはどと同様で ス名、 /mnt/flash はマウントボイントで、次の msdos は 図 41 の最初のフィールドにある /dev/sdal はデバイ /fstab に追加します 20 具イ勺には、エデイタを使って図 41 のような行を /etc てしまえは、手軽にマウントできるようになります。 ト・フラッシュカードをマウントするための↑帯にも追加し いうファイルにまとめています。このファイルにコンパク 引数を使ってマウントするかという情報を / etc / fstab と UNIX では、どのデバイスをどのディレクトリにどんな になって mount コマンドを実行しなければなりません。 クト・フラッシュカードを使うたびにスーパーユーザー これで一応うまくいきましたが、このままではコンパ ドの内容も見えているようです。 ています。次の ls コマンドでコンパクト・フラッシュカー sdal が /mnt/flash にマウントされていることが示され バックアップなどをとるかどうか ( 0 のときはとらない ) 、 2 つ目が fsck コマンドでファイルシステムのチェックをす るかどうかにれも 0 のときはしない ) を表しています。 いったんこの設定を /etc/fstab に書いてしまえば、あ とは一殳ユーサーとしてマウントすればよいことになりま す。試しに一度マウントを外して (umount コマンドを使 います ) 、一殳ューサーて再度マウントしてみると、次のよ うにうまくいくことが分かります。 # umount /mnt/flash # exit um% mount /mnt/flash um% ls /mnt/flash /mnt /f 1 ash : qvimg02/ これで、デジタルカメラで写真を彡し、コンパクト・ フラッシュカードをカードリーダーに挿して Linux から 内容を読む作業が簡単にできるようになりました。今回使 用した QV-5500SX の場合、 /mnt/flash/qvimg02 以下 のディレクトリに、撮景彡された写真が JPEG フォーマ ットで保存されているので、そこにある画像ファイル ( 図 42 ) をそのまま使ったり適当なディレクトリにコピーすれ ば写真を取り込めます。 画像を画面に表示するためのソフトウェアとしては xv か有名で、多くの Linux のディストリビューションでは 標準でインストールされています。 xv を使って写真を表 示した例か図 43 です。 余談になりますが、 QV-5500SX には、、カードプラウ サ " という機能があり、デジタルカメラの電源を切るたび に、それまでに彡した写真を WWW プラウサで見られ るように HTML ファイルを作成してくれます。コンパ クト・フラッシュカードの qvimg02 ディレクトリのな かにある index. htm を netscape で見ると図 44 のよう になっていました。 69

2. UNIX MAGAZINE 1999年11月号

ワークステーションのおと一 O 図 1 /etc/vfstab 」 # /etc/vfstab # device # to mount /dev/md/dsk/d32 device mount to fsck point FS t ype fsck mount mount pass at bOOt options /disk/d32 ufs yes logging 図 2 metadb コマンドで Metadevice State Database の置き方を諚する # /usr/opt/SUNWmd/sbin/metadb —f —c 2 —a /dev/dsk/cOtOdOs4 # /usr/opt/SUNWmd/sbin/metadb a a せんが、 す。 フラク pc 1u0 pc 1u0 最初のプロック 16 1050 プロックカウント 1034 1034 /dev/dsk/c0tOd0s4 /dev/dsk/c0tOdOs4 そうなると設置場所やコストの間題が出てきま このような不もありましたが、イ衄生の向上や運用も 楽になるといった利点のほうか大きく、 3 年以ーヒにわたっ て UFS Logging の機能を使ってきました。 さきほど書いたように、 Solaris 7 では UFS Logging の機能が OS に組み込まれたため、たいへんイ甦リになりま 使い方 Solaris 7 での UFS Logging の使い方は簡単で、 /etc /vfstab ファイルでマウント・オフションとして logging を指定するだけです ( 図 1 ) 。 mount コマンドは、 # mount ー 0 logging /dev/md/dsk/d32 /disk/d32 のように実行します。 ただし、 UFS Logging を大きなファイルシステムで 利用するときは注意が必要かもしれません。 SoIaris 7 の mount-ufs コマンドのオンライン・マニュアルには、次 のように書かれています。 The 10g is allocated from free blocks on the file system, and is sized approximately 1 Mbyte per 1 GbYte 0f file system, up t0 a maximum 0f 64 MbYtes. もしかすると、 64GB が限界なのでしようか。残念な がら、 64GB のファイルシステムを作るほどのディスク がないので試してはいません。 UNIX MAGAZINE 1999.11 metadb コマンドのオプション インストールしているうちに気づいたのは、、、 Meta- device State Database" の置き方です。 Metadevice State Database とは、 Solstice DiskSuite のディスク 構成を憶えておく場所のことで、これが壊れてしまうと、 Solstice DiskSuite てオ冓成しているファイルシステムが きれいさつばり消えてしまいます。マニュアルには、全体 で 3 つ以物呆するようにと書かれています。 さらに読み進むと、 ・ 3 つ以ー E の Metadevice State Database を置き、可 能であれば別のディスクを使うこと ・別々のディスクに置けないのであれは、同しディスク に 2 つ以上置くこと (metadb コマンドに一 c オフショ ンを付ければ、同レヾーティションに 2 つ以置くこ とができる ) と説明されています ( 私はこれを知らず、ディスク容量が 少ない構成の場合はむりやり小さなパーティションを作 り、そこに Metadevice State Database を置いていま やはり、マニュアノレは読むものです した ) 。これは図 2 のように実行します。 ( さかした・しゅう ASTEC) 107

3. UNIX MAGAZINE 1999年11月号

プログラミング・テクニック 図 1 inetd. conf の書式 サービス名ソケットタイププロトコル実行形式ユーザー名 引者は個々のサーピスの本質的な部分のみを考慮すれはよ いようになっています。 inetd を利用する場合、プログラムはソケットのことを ほとんど考慮する必要がありません。プログラムは、クラ イアントと接続されたソケットカワ。ログラムの標準入力と 標準出力に割り当てられた状態て起動されます。したがっ て、普通に printf 関数を利用すればクライアントに対す る書込みができますし、 getchar 関数などでクライアント からのデータを読み込むこともできます。つまり、ネット ワークで接続されたクライアントと通信しながら処理して いることを意識する必要がなく、標準入出力を用いて通信 できるのです。 もちろん、 inetd プログラムに登録しなければこの機能 は使えませんから、誰もが簡単に利用できるわけではあり ません。しかし当求できるのであれば、これほどイ甦リなこ とはないでしよう。 inetd の利点はこれだけではありません。上記のような 処理だけが目的ならば、適当なライプラリ関数を提供すれ ば簡単に見できます。本当の狙いは、プログラムの作成 を簡単にすることではなく、待 ) プロセス数を減らす ことにあります。 サーピスごとにプログラムを作成した場合、各サーピス に対する要求を処理するためのプロセスが別個に必要にな ります。ところが、これらのプロセスの大半はたんに接続 要求か到着するのを待っているだけで、はとんどの時間は 止まっています。そのようなプロセスのために貴重な資源 を使うのはもったいない話です。 そこで inetd の作者は、サーピスを提供する段階で fork システムコールによりプロセスを作成するのだから、 すべてのサービスに対する接続要求を 1 つのサーバーで待 ち受けるようにし、 fork したあとに exec システムコール を実行することで目的のプログラムを動力せばいいと考え たのです。この去であれば、待寺 = に使用するプロセス の数は 1 つだけになり、しかも要求されるサーピスはすべ て提供することかできます。 ただし、このガ去も完璧ではありません。前回、 ftp プ ログラムを紹介したときにも触れましたが、 inetd を経由 UNIX MAGAZINE 1999.11 プログラム引数 ケットタイプが dgram なら tiudp を指定することにな しまいます。ソケットタイプが stream ならば tcp を、ソ はとんどの場合には直前のソケットタイプにより決まって protocols ファイルに記述されているプロトコルですが、 として用いられる値を指定します。指定可能な値は / etc / 定します。実際には、 socket システムコールの第 3 引数 、、プロトコル " では、ソケットで利用するプロトコルを指 ていは stream か dgram になるでしよう。 raw 、 rdm 、 seqpacket のいすれかを指定しますが、たい 用いられる値を指定します。ここでは、 stream 、 dgram 、 ます。実際には、 socket システムコールの第 2 引数として 、、ソケットタイプ " には、利用するソケットの型を指定し を待つべきポートを指定します。 ここで inetd か接続要求 ビス名を指定します。つまり、 サービス名 " には、 /etc/services に書かれているサー ています。 inetd. conf ファイルの各行は、図 1 のような形式になっ # がコメントを表します。 ルは /etc/inetd. conf です。このファイルでは、行頭の ファイルについてみておきましよう。通常、成疋ファイ プログラムの内容を紹介する前に、 inetd が用いる成疋 inetd. conf ファイル ばなりません。 サービスに対する要求のパターンにもとづいて考えなけれ げることになります。 inetd を利用するかどうかは、その で接続要求を待つほうがけっきよくはシステムの負荷を下 求がある場合には、 inetd にイをるのではなく、自分自身 これらのオーバーヘッドカ墹題となるほど大量の接続要 ドとなります。 提供するための初期化にかかる時間も同じくオーバーヘッ コールのオーバーヘッドがあります。さらにサービスを ます。しかし inetd から起動した場合は、 exec システム プロセスを作成した直後にサーピスを提供することができ 単独で接続要求を待っ場合には、 fork システムコールで子 オーバーヘッドカ吽しるのです。デーモン・プログラムが して起動するガ去では、サービスを提供するたびに若の 123

4. UNIX MAGAZINE 1999年11月号

Security Tools ■ ーサーも、 $HOME/. ssh/authorized-keys を使えはア クセス制御かできる。このファイルにはユーザーの公開鍵 を登録するが、使用するホストのものだけに限定しておく のである。また、 ( サーバー上の ) /etc/sshd-config て指 定しておけば、公開鍵と秘密鍵を使った認証だけをおこな うこともできる。この場合、 SSH クライアントと SSH サーバーの接続にはパスフレーズが必要になり、パスワー ド認証は使用できなくなる。 Tiger tiger スクリプトは TAMU (Texas A&M University Security Package) の一にである。このスクリフトはシス テムを角斤し、セキュリティ上の間題となりそうな点を報 告する。 TAMU のアーカイプを展開してインストールす れば、あとは tiger スクリプトを実行するだけなので、簡 単に使い始めることができる。 スクリプトは、発見した間題点をレポートにして出力す る。レポートの各項目には、 5 つのエラーう嶽頁 (ALERT 、 FAIL 、 WARN 、 INFO 、 ERROR) の 1 つか見出しと して付けらさらにエラー番号か記されている。 tigexp スクリプトを使えは、エラー番号を入力して各問題点の解 説を表示したり、セキュリティ・レポートに解説を付けて 表示することができる。 TAMU ノ、ツケージには、 Dan Farmer の COPS と の類似点がいくつもある。 COPS と上交すると、 tiger は 使いやすく、設計も優れており、システム設疋ファイル に関する詳しい解説も付いている。しかし TAMU には、 COPS に伺属する kuang のようなエキスパート・システ ム型のチェックツールは用意されていない。 TCP Wrapper このユーティリティは、ユーサ、一がサーバー上のサー ビスにアクセスする際により強力なアクセス制御をおこな う。 TeInet や FTP などのネットワーク・サーヒ、スは、 通常は inetd の成疋ファイルによって管理されているが、 TCP Wrapper はこれらのサービスに対する要求を監視 し、フィルタリングをおこなう。 TCP Wrapper の動作 は屯である。届いた要求を取得して、要求を出したクラ イアントをログに言当求し、追加のセキュリティ・チェック をおこなう。クライアントかサービスへのアクセスを許可 94 されていれは、要求されたサービスを起動して終了する。 TCP 从を、 apper は 2 つの方法で使用することができる。 1 つはネットワーク・サービスのデーモンを別の場所に移 動し、そのデーモンを TCP wrapper で置き換えるガ去、 もう 1 つは TCP Wrapper を使ってデーモンを起動す るように inetd の設定を変更するガ去である。 アクセス制御は、サービスやホスト、ユーサー、あるい はそれらの組 . ・作ごとにおこなえる。 TCP Wrapper は、 要求が届いたときにアクセス制御をおこない、そのうえで プログラムを実行する。また、名前とアドレスの一貫性の チェックもおこなう。このチェックでは、権限をもつ DNS サーバーを使い、要求を出したクライアントを名前で逆引 きする。コンパイル時にオプションを設定しておけは、名 前とアドレスの不一致がみつかったときにサービスへのア クセスを拒否することができる。一方、ユーサー名の検索 は、デフォルトではアクセス制御で必要になったときだけ おこなわれる。 ホストに対するアクセス制御は、通常は /etc/hosts. allow と /etc/hosts. deny ファイルで管理される。 hosts. allow に登録されているホストはすべてアクセスを許可さ hosts. deny に登録されているホストはアクセスを拒 否される。上記のいすれにも記載されていないホストはア クセスを許可される。 以上のチェックに加えて、ホストアドレスの偽造や TCP シーケンス番号の推撃に対するチェックもおこ なわれる。また、 TCP Wrapper は syslog デーモンを 使い、要求されたすべての接続をログに言当求する。デフォ ルトでは、 sendmail デーモン用のファシリティでログを 言当求するが、コンパイル時に MakefiIe を編集すれは変更 もできる。 1999 年 1 月 21 日、 CERT/CC は、 TCP Wrap- per のソースコード・ノヾッケージのいくつかが何者かに よって改竄され、トロイの木馬 1 か仕込まれていたのを発 見したとの通報を受けた。これ以前にダウンロードされた パッケージには、こク寺殊なトロイの木馬は組み込まれて いない。しかし、トロイの木馬が仕込まれた TCP Wrap- per を実行しているホストには、侵入者が root で不正に アクセスできるので、被害が発生する危険性がある。 1 実行するユーサーク喆莅を奪えるイ皀を潜ませたプログラムで、セキュリ ティ上の脅威となる。 UNIX MAGAZINE 1999.11

5. UNIX MAGAZINE 1999年11月号

特集 Web で日記帳システムを作ろう 図 22 うまくした証拠 ( その 1 ) # cat /etc/httpd/logs/error—log [Sat Sep 18 12 : 49 : 02 1999 ] [notice] Apache/1.3.6 (Unix) (Red Hat/Linux) configured normal operations らのアクセスのみ許す」という設定になります。 同じファイルをさらに読んでいくと、 /home/httpd/ html に対する制限を言当主するための <Directory/home /httpd/html> という行で始まるプロックがみつかりま す。 こでは、次のように「誰からのアクセスでも許す」 a110W from a11 order a110 , deny と宣言しています。 ます。それには、以下のように行頭に # を追加して、この があるので上記のデフォルトの制限をかけておくことにし いのですが、前述したように知らない人に覗かれる可能生 パッケージに含まれていたものだけです。このままでもよ このディレクトリに置いてあるファイルは、 Apache の # a110W from a11 # order a110 , deny 2 行をコメントアウトします。 UNIX MAGAZINE 1999.11 9 HTTP サーバーと同し名前なのでややこしいのです・・ せん。 : 意してください。 ネットワークに孑Æしているときなどにば真重におこなわなくてはなりま 8 この変更は、計算機に自分タ P ) ューサーがログインできるときや、 トと呼はれるファイルで、複数のコマンドをまとめて啣 ル 9 をみてみます ( リスト 4 ) 。これはシェル・スクリプ けを実現している /etc/rc. d/init. d/httpd というファイ たり終了したりするイ」曲け」を用います。ます、この負掛 にします。図 20 の 9 行目にあった、「 httpd を起動し 動しない」カ、のポリシーなので、ほかの手段をとること 起動してもよいのですが、「 UNIX マシンはなるべく再起 0 、一第、一卩 ーて計機を再 httpd を起動する準備ができました に変更します 8 。 A110wOverride A11 となっている行を、 A110wOverride None うプロックで、 しておきます。それにはさきほどの < Direct 。 ry / > とい ルを置き、ディレクトリごとの言立か柔軟にできるように もう 1 つ、各ディレクトリに . htaccess というファイ 図 23 うまくした証拠 ( その 2 ) ァイル編集表示ジャンプ conunlcator 戻る、第第再読込ホム検索ガイド印刷 、ブックマーグ 4 ジャンア : http://localhostl lt Worked! resu.mlng ヘルア 保護 lfyouc 組 & ee 加 itmeans 出献市 e ⅲ st 心 onof 山 SO v 紅 eo Ⅱ s 袞 Hat Linuxsystemwas successful.youmaynowaddcontenttothis directoryandreplacethis lfyouare seeingthisinsteadofthecontentyouexvected,pleasecontact 朝 a 山ⅲれ trator 物 e site ⅱバー ve lfyousendmail aboutthistothe au 山 0 爲 Of 山 eApa 曲 eso ′町 eo 「袞 ed HatSofr.vare,who 3 ostce 臧曲町 , TheApachedocumentationhas beenincludedwfithis distibution. FO 「 dOC Ⅲ】 t 0 d ⅱⅱ on 第 0 れ on 袞 edHatL ⅲー以 . が ea ⅵ eweb siteofR 、 ed Hat So 3 代 . ThemanudforRedHatLinuxis 観曲厄 h 誕巳 youare&eetousetheimasebelowonan Apache—poweredweb sen ′び . Thønksfor using Apache! YouarefreetousetheimagebeIowonaRed HatLinux—poweredweb serster. Thanks forusingRedHatLinux! hat- ために httpd ( この日トけのほう ) に start という引数を それでは、 httpd (HTTP サーバーのほう ) を起ける という引数があるようです。 status や restart 、 reload とが分かります。このほかに、 数 start を、停止させるには引数 stop を与えればよいこ リスト 4 をざっと眺めると、 httpd を起動するには引 します。 業かま現できるので、 UNIX を使うときにはたいへん重宝 かかわらす、コマンドの系区しや条件分岐による複雑な作 よく実行するために用いられます。簡単に言当できるにも 与・えて実行します。 # /etc/rc . d/init . d/httpd start Starting httpd : [ OK ] これて起動したようですが、念のためにログ ( 図 22 ) を 見ます。 resuming normal operations" とあるので、 うまく起動できたようです。 59

6. UNIX MAGAZINE 1999年11月号

, けつま 3 びっド た。 lpr コマンドでファイルを指定すると、とくにエラー も出すにプロンプトカ唳ってきます。ところが、いつまで たっても印刷カ始まらないのです。 lpq コマンドで待ち行 列を石忍すると、何もエントリがありません。 道中では pc の電源を切っていて、也に落ち着いて から FreeBSD を再起動したので、 lpd カ位ち上がってい ないのかもしれない、と考えました。しかし、 ps コマン ドて確認すると、 lpd は起動しているようにみえます。 どこに問題があるのか分からないまま、しばらくは cat と psprint. sh を組み合わせる方法でしのいでいました。 先日ふと気になって、起動時 = に自重加勺に立ち上がっていた lpd を k Ⅲコマンドで停止させ、コマンドラインから lpd を立ち上げなおしてみました。それから lpr を使ってみる と、なんの間題もなく印刷できたのです。 自動的に立ち上がる lpd に問題があったようなので、 rc. conf での lpd 関係の成疋が足りないか、すこし間違っ ているような気がします。いまは手動で lpd を立ち上げて 使っていますが、そのうちきちんと調べて完全に直したい と思っています。 CD - 日 OM を使おう 140 BSD で CD-R に書き込むのは難しいと聞いていたのに う CD-R ドライプを購入しました。 FreeBSD や Net- と脅されながら、けっきよくソニーの「 CRX50A 」とい してみないと分からないよ」 「 8 割方は使えると思うけど、本当に使えるかは買って試 師匠に、 イプをつながなけ川まなりません。 持っていかないので、ノート PC 自体に CD-ROM ドラ 由て利用していました。しかし、英にはノート PC しか デスクトップ PC の CD-ROM をマウントして NFS 経 プ PC があったので、 CD-ROM を読み込みたいときは、 これか初めてでした。いままではいつも近くにデスクトッ しつは、ノート PC で CD-ROM ドライプを使うのは 要 " と思ったのです。 が、音楽を聴くためにも利用できると知って、、、絶対に必 アプリケーションを入れるときに使えるのはもちろんです もう 1 つの周辺機器が CD-ROM ドライプです。新しい 英国に行くことになったとき、持っていこうと考えた わざわざ高価な CD-R ドライプを買ったのには理由があ ります。私はデジタルカメラでいろいろな画像を言求して いるので、向こうにいるあいだにハードディスクの容量が 足りなくなる・じ哂己があったのです。 FreeBSD などから書 き込めなくても、 NetBSD マシンのはしっこに残ってい る Windows 95 を利用すれば書き込めるので、 CD-R に いろいろなデータを移すことができます。また、 1 年もい ると、画 ( 丿、タ ) データをバックアップすることもあるで しよう。でも実際のところは、店頭で実物を見たときに、 薄くて小さくて恰好がよかったのですっかり気に入ってし まったというのカ立ーー・番の理由かもしれません。 FreeBSD て使ってみよう 私の使っている 2 台のノート PC には、どちらにも PC カードスロットが 1 つしかありません。 NetBSD では現 在のところ PC カードの重加勺な抜き挿しができないので、 使用中に抜き挿しをするような用途には使えません。そこ で、おもに FreeBSD マシンで CD-R ドライプを使うこ とにしました。 CD-R ドライプに付属していた PC カードは、 16bit モードと CardBus モードを切り替えられるようになって いました。 FreeBSD は、まだ普通のカ 1 去では CardBus を扱えないので 16bit モードに設定します。とりあえす PC カードスロットに PC カードを挿してみましたが、い つまで待っても認識されません。 たまたま知合いに同し CD-R ドライプを使っている人 がいたので話を聞いてみると、新しい PC カードを使うと きは、 /etc/pccard. conf にエントリを追加しなけれはな らないのだそうです。そこで、師匠に PC カードのエント リの追加去を教わりました。 UNIX MAGAZINE 1999.11 IO DATA 製の PC カードのエントリ ( リスト 3 ) が pc カードも同しように設定しました。ちょうど同し wdcl に割り当てるように設疋されているので、新しい 加する ( ほかの CD-ROM 用の PC カードはどれも 2. 次に、 /etc/pccard. conf にこの名前のエントリを追 カードは IO DATA の CBIDE2 だと分かりました ) 。 6 ) をみつける ( この CD-R ドライプに付属している のなかから pc カードの名前か書かれている部分 ( 図 ンドを入力すると、 PC カードの情幸師ゞ表示される。そ 1. PC カードを挿して pccardc dumpcis" というコマ

7. UNIX MAGAZINE 1999年11月号

特集 Web で日記帳システムを作ろう 図 47 ログファイルの最後の行を見る um% tail ー 1 /etc/httpd/logs/access—log ー [ 18 / Oct / 1999 : 17 : 46 : 24 + 0900 ] "GET /-miyasita/nikki/bin/99A18001. jpg HTTP/I . 0 " 404 226 localhost ー 写真のファイルは、前述した /mnt/flash/qvimg02 デ ィレクトリにあるものを日記ファイルと同じディレクトリ にコピーしておきます。 QV-5500SX のファイル命名規 則は、、年月日十 3 桁の連番 " で、そのままコピーしても分 かりやすくなっています ( 、、月 " は 16 進数て表されます ) 。 1 迎 % cd -/pubIic—htm1/nikki/1999/10 1 % cp /mnt/f1ash/qvimg02/camera/99A18001. jpg 日記には図 45 のように言当して、 netscape で見てみ ます。日記を閲覧するには前出の CGI プログラムを利用 するので、 http://localhost/-miyasita/nikki/ヘアク セスし、 1999 年 10 月 18 日の日記を指定します。しか し、写真カ俵示されるはすのところに、、破れた絵 " か表示 され、 alt 属性で言当した説明だけか表示されてしまいま した ( 図 46 ) 。これは、指定した画像ファイルがみつから なかったことを意床しています。 みつからなかった原因を調べるには、 httpd の出力し たログファイルを見ます。さきほど httpd をインストー ルしたときに確認したように、 httpd のログファイルは /etc/httpd/logs ディレクトリに置かれていて、アクセ スに関する記録はそのなかの access 」 og に残ります。最 近のアクセスについての言当がファイルの末尾に追加され るようになっているので、結果はこのログファイルの末尾 に言当求されているはすです。 ログファイルの最後を見ると ( 図 47 ) 、 -miyasita/ nikki/bin/99A18001. jpg というファイルにアクセスし ようとして失敗したようです。このディレクトリには画像 ファイルは置いてないので当然ですね。これは、日記を閲 覧するための CGI プログラムが -/public-html/nikki/ bin にあるので、画像ファイルをたんにファイル名だけで 指定すると同しディレクトリに置いてあることになってし まうからです。これを避けるために、日記ファイルに手を 加えて、この CGI プログラムか置いてあるディレクトリ からの相対パス (). / 1999 / 10 / 99A018001. jpg ) て指定す るように変更するのは簡単ですが、 こでは CGI プログ ラムのほうを変更して鮹夬することにします。 画像ファイルは、 -/public-html/nikki/photo ディレ UNIX MAGAZINE 1999 ユ 1 クトリにまとめて置くことにします。 um% cd -/public—html/nikki um% mkdir ph0tO um% mv 1999 / 10 / 99A18001. jpg photo そして CGI プログラムの 21 行目にある、 日記ファ イルに空行があったら < p > に変史する " という行 ( 図 48 ー a) に、、、画像ファイルの指定があったら .. /photo/ という 文字列をファイル名の頁に追加する " という竹業もさせ ることにします ( 図 48 ー b ) 。この .. / ph 。 t 。 / は、この CGI プログラムのあるディレクトリからみた画像ファイルの置 いてあるディレクトリへの相対パスです。 この変更をして再度 netscape でアクセスすると、今度 はうまく表示されました ( 図 49 ) 。 以 E をまとめると、デジタルカメラて才彡した写真を日 記に貼る作業の手順は次のようになります。 1. デジタルカメラのコンパクト・フラッシュカードをカー ドリーダーに挿す。 2. それをマウントする。 3. /mnt/flash 以下のディレクトリから必喫な写真のファ イルを -/public-html/nikki/photo にコピーする。 " て始まるフレーズ 4. 日言己ファイノレに、、 <img src= をする。 これで、日記帳に写真を貼ってアノレヾムのように使うこ ともできますし、字を書くのが面倒なときは適当に写真だ け貼っておくこともできるようになりました。写真の画像 ファイルだけを連続して表示するようなイ士掛けにすれば、 日々の記慮を映像て振り返る、、走馬灯システム " も作れそ うです。 0 日記帳検索システム こからは、 WWW を用いて日記帳の全文検索をおこ なうシステムを作ってみましよう。 全文検索とは、文字どおりその文書中のすべての文に 対して検索をおこなうことです。計算機の処珊度が - E が り、大規模な記應装置か安価になったことで、大量の文書 0 71

8. UNIX MAGAZINE 1999年11月号

インターフェイスの街角 リスト 2 toptext. c( テキスト頁の重要部分を切り出す ) #include く stdio . h> #include く ctype . h> #include "toptext . れ " #define ESC 0x1b #define ishigh(c) ( (c) > = 0X80 ) typedef enum { BIN, ASCII, SJIS } JIS, EUC , Code ; / / 文字コードリ定 static C0de checkcode (unsigned char Code code = ASCII ; enum {LOW, HIGH} lh = LOW; unslgned char c; = LOW){ if (lh ESC) { code if(c JIS; else if(isspace(c) Ⅱ isprint(c)){ } else if(c > = 0X80 ) { JIS) return BIN; if (code 1 = HIGH; else { return BIN; } else { / / コードにより SJIS/EUC 半淀 if (c > = 0X20 & & c く = OxaO){ code else if (c > = 0xa1 & & c く = 0xfe){ if (code ! = SJIS) code = EUC; else { return BIN; } 1h = LOW; checkcode(s) ; COde if (code BIN) return for(;p—buf く 1000 & & *s;s + + ){ if(!jis & & isupper(c)) c switch(state){ case SSTART: ESC){ state if(c else if(isspace(c)){ } else if(c > = 0X8 の { c 1 SHIGH; state else { / / JIS → if(jis) (c ー 0X8 の ; * p 十十 * p 十十 = C ; tolower(c) ; = SESC; } break ; case SESC: if(c else if(c else { state break ; case SESC2: state break ; case SHIGH: c2 = SJIS){ / / SJIS → EUCÄ if (code 0xe0) cl 0X40 ; if()2 > = 0X80 ) c2- ( cl ー 0X81 ) * 2 + c 1 (c2>=0x9e ? 1 0 ) + 0xa1 ; ()2 > = 0x9e ? c2—0x9e c2 c2 ー 0X40 ) + 0xa1 ; cl; * p 十十 c2; * p 十十 = = SSTART; state break ; default : break ; SESC2 SESC2; } d 0 = 1 ・ 1 tn = SSTART; SJIS ・ return COde ; typedef enum { SSTART , SESC , SESC2 , SHIGH State; / / 頁から 1 , 000 パイトを EUC に奐して抽出 unsigned char *toptext (unsigned char *s) SSTART ; State state static unsigned char buf [ 2000 ] ; unsigned char *p = buf ; unsigned char c,cl ,c2; int jis = 0 ; Code code ; return buf ; ( 誌面の都合上、て寸斤り返しています。以 - ) を ASCII 文字列て表現すればシグネチャ・ファイル本 とることにします。たとえは、、 data " という文字列であれ ば、、、 dat" と、、 ata " という単語から成り立っていると考 をテキストファイルにできるので、各ファイルのシグネ チャの石忍や、エントリの追加 / 変更か容易になります。 えてシグネチャを計算します。 そこで、今回はテキスト形式のシグネチャ・ファイル シグネチャはビット列として表現されるため、シグネ を使うことにしました。たとえは、ファイル / f 。。 / bar の チャ・ファイルをバイナリ形式にすることも考えられま シグネチャが、、 000100100001 " である場合、これを 6 ビ す。しかし、 uuencode や MIME のようにシグネチャ 173 UNIX MAGAZINE 1999.11

9. UNIX MAGAZINE 1999年11月号

図 2 inetd. conf のエントリ列 ftp stream tCP ります。 nowait /usr/libexec/ftpd ftpd ー 1 次の、、実行形式 " には、 wait か nowait のいずれかを 指定します。 wait は、 inetd か起動したプログラムか終 了するのを待ち、それから次の接続要求を受け付けること を表します。一方 nowait を指定した場合には、 inetd が プログラムを起けると、すぐに次の接続要求を受け付け ます。 データグラムを利用するサーバーでは、通常は接続要求 を受け付けるソケットとサービスを提供するソケットが同 しなので、 wait を指定します。このようなサーバーは、繰 り返し呼び出されるので、、反復サーバー " と呼はれること があります。一方、ストリームを利用するサーバーでは、 接続要求を受け付けたときに新たに作成されるソケットで サービスを提供するため、とくに工夫しなくても nowait を指定することができます。このようなサーバーは、接続 要求の受付けとサービスの提供を並行して処理できるので " と呼ばれることがあります。 、、ユーサー名 " には、プログラムを実行するときにどのユ ーサーの権限で動作させるのかを指定します。ですから、 そのシステムで有効なユーサー名でなければなりません。 通常は root を指定しますが、とくに権限を変えたい場合 に利用します。 次の、、プログラム " には、実行するプログラムのパス名 を指定します。ここで指定したパス名は、 execv ライプラ リ関数の第 1 引数 ( つまり execve システムコールの第 1 引数 ) となります。 inetd は、接続要求を受けたときに f 。 rk によって子フロセスを作成し、このプログラムをサー バーとして起動します。 プログラム名の後ろには、プログラムを起動するときに 指定する引数を指定します。 こには、 argv 配列として 渡されるすべてのものを指定するため、 argv[o] にあたる プログラム名から指定します。 たとえば、 /etc/inetd. conf ファイルには図 2 のよう な行があります。これは FTP サービスを指定するための 行ですが、 stream 型の TCP のソケットを利用し、サー ピスを起動したらすぐに次の接続要求を受け付けます。ま た、実行するプログラムの権限は root です (FTP サー 124 バーでは、自分自身でプログラムの実行権限を変更するた め、最初は root 権限で重川乍します ) 。実行するファイル は /usr/libexec/ftpd であり、プログラムには、あたか もコマンド行から、 # ftpd ー 1 として起動されたかのように ( # はプロンプト ) 、 (argv 回も含めて ) 2 つの引数か渡されます ()l は接続に関す るログを言求するオプションです ) 。 設定ファイルの読込み 実際のプログラムをみていくことにしましよう。ます は、さきはど紹介した成疋ファイル inetd. conf を読み込 む部分です。 設定の言もムみに関しては、次のような関数群が用意され ています。 int setconfig(void) ; struct servtab *getconfig (void) ; void endconfig(void) ; これを見て何か思い出しませんか。 UNIX のライプラ ・ closedir() ・ readdir() ・ opendir() ば、ディレクトリの内容を読み込む場合には、 という手順でデータを扱うことがよくあります。たとえ ・クローズする データを読み込む髞り返す ) ・オープンする リ関数では、 リを読み込み、 endconfig で設定ファイルをクローズし 備えます。 getconfig でファイノレの各行に書かれたエント setconfig では、成疋ファイルをオープンして言もムみに を用意しています。 という 3 つの関数を使います。 inetd でも同し形式で関数 ます。 UNIX MAGAZINE 1999.11

10. UNIX MAGAZINE 1999年11月号

ーⅧ sffuiion& 新しいネットワーク・コンビューティングを EMT がご提案します。高い信頼性とハイ・スへックを 共存させた EMT ならではの製品システムをお確か め下さい。 対応 OS ・ FreeBSD ・ SoIaris7 ・ Linux ・ BSD/OS ・ NetBSD ・ WindowsNT/98 他多数 HDD Max10GB ・メモリ Max128MB ・ FAST Ethernet 1 OOMBPS 対応 高信頼性・高性。洋 リ雁「日 SCS ーモデル、 リ雁「Ⅳ旧日 SCSIE デル 45G 日・ 9. IG 日・ 18.2G 日 36G 日新発売 ! ttp:/ Ⅳ - em 00 すホームペーシ : ラックマウントタイプ こラックマウント対こ、 製筺体によりコンバクト・サーバーと て幅広いニーズに対応します。 ltralli 300 , 333 , 360 , OMHz 超高密発月報社会 EMT のハイパワー ソリューションが切り孱 リ S-70 シリース ' リ [ SP 高い汎用性と高性能を両立させた EUS シリーズは、進化し続ける WO 「 kstation に求 められる様々なニーズに対して、最高のパフォーマンスを提供します。 EIJS- 10 シリース UltraLi 300 , 333 , 360 , 0440MHZ UItralI 300 , 360 , 0400MHZ Single,Dual-CPU E リ S -60 シリース ・特長・Ⅷ t 「 a - Wide / SC 引を標準搭載 ・スペースファクターの優れたコンパクトタワータイプ・電源部をニ重化することも可能 ( オプション ) 、リ s -450 シリーズ U / t 「 a Ⅱ 300 , 360 , 0400MHZ Single,Dual,Quad CPU デスクトップタイプ ネットワーク・コンビュータ ENC4 シリー 外付けハードディスクドライプ ENC5 シリーズ 戸 C / リーマシン各種 高速ディスクアレイ Ⅷ日 1 / 2 クローン機 Sun 用アップクレードキット各種 【取扱品目】メモリモジュール・テープバックアップ装置・ S - BUS 増設カード各種・その他ワークステーション用オプション機器 、 - 工ム・ティーーーーーーーーー - ー営業 TEL : 03-37 ー発売元 技術 TEL : 03-5700-4013 E-Mail:sales@emt.co.jp 〒 146-0082 東京都大田区池上 6 ー 20 ー 7 URL:http://www.emt.co.jp 資料請求 No. 019 ※記載の社名及び製品名は、各社の商標または登録商標です。 ERVIT