リスト 2 authsrv を起動する言聢ファイルの記述例 ・ /etc/inetd. conf に追加 authsrv stream tcp nowait root ・ netperm-table に追加 /usr/local/etc/authsrv authsrv authsrv : authsrv : hosts 127.0.0. 1 database /usr/local/etc/fw—authdb 図 3 複数のファイアウォール FWTK 内部ネットワーク authsrv ロ FWTK ・計算機はファイアウォール内部のネットワークに接続 する ・ FWTK の認証システムの管理者しかログインできない ようにする netperm-table の言聢 authsrv に対するルールを netperm-table に言しま す。ルールのガ去は、もうすこしあとで説明します。 authsrv の起動方ラ言諚 authsrv の起動方法は、 tn-gw の場合と同様です。 5 月 号を参照してください。 最初に、ファイル /etc/services に次のエントリお助日 一方、ユーザー認証を必要としない場合は、認証システ ムを導入しません。 ューザー認証を必要とする場合も、必要としない場合 も、その理由を町寉に決めておきます。 authsrv を朝する計算機 authsrv は、一ヨ殳にファイアウォール・ホスト上で漣 用しますが、それ以外の計算機上で運用することも可能で す。 外部ネットワークへの、、出口 " か馥数あり、それぞれの 出口に FWTK のファイアウォールを設置している場合 ( 図 3 ) は、ユーザーの情報を 1 つの計算機上で管理できる ので、管理の手間カ鰔らせます。 FWTK の利用者にとっ ても、あちらのユーサーのパスワードを変更して、それか らこちらのユーザーのパスワードも変更して、 ・とし、つ た手間カけます。 この連載では、ファイアウォールと認証ホストをう隹し て運用するガ去は紹介しませんが、とくに難しくはないの します。 authsrv 7777 / tcp で試してみるといいでしよう。その場合、 ポイントに注意して構築・運用します。 以ードの 3 つの ・証サー る 30 ーを運用する計算機は認証サーバー専用にす 次に、デーモンモードと inetd のどちらて起動するの かを決定し、設定ファイルをします。 リスト 2 に、 inetd から起動する場合の設疋ファイルの 例を示します。 ユーザー乍成 FTP の中継サービスでユーザー認証をおこなう場合は、 FWTK の認証システム上にユーサーを作成します。 ューサーの作成ガ去は、以降で説明します。 乍確認 最後に、認証サーバーが意図どおりに重川乍するかを石忍 します。うまく動かない場合は、かならす意図どおりに動 くまで設定を修正してください。 やってみる それではいつものように、 authsrv を実際に使ってみ ましよう。 こでは authsrv に慣れることを目的に、以下の操作 をおこないます。 UNIX MAGAZINE 1998.7
連載 / IJN Ⅸの玉手箱ー② ステムがユーザー情報を高速に参照できるように特殊 なデータベース形式に変換して保存されています。デ ータベース形式のファイルは、それぞれ /etc/pwd. db 、 /etc/spwd. db です (Solaris には、このようなイ督はみは ありません ) 。 グループ名と GID は /etc/group というファイルで対 応づけらそのグループに属するユーサーなどを指定す ることができます。 /etc/passwd や /etc/group などは、ローカルマシン のアカウント情報だけでなく、 NIS (Network lnforma- tion Service) などを用いてアカウント情報をネットワー クで共有する場合にも使われます。 ューサーやグルーフ情報の設定については、ツールも凸 めて次回以降で詳しく説明します。 シェルに関する設定 ューザーがログインすると、ます、、シェル (shell: 貝 " と呼ばれるプログラムか起動されます。シェルは、ユ ーサーとシステムの仲立ちをするプログラムです。ログイ ンすると端末に表示されるプロンプトは、システムではな く、シェルがユーザーの入力を促すサインです。たとえ ば、シェルのプロンプトに対して、、 ls" という文字列を入 力してリターンキーを叩くと、シェルは ls というプログ ラムを探し、あればそのプログラムを起動します。起動さ れたプログラムはプロセスとしてシステムの管理下に置か 実行結果がシェルを通して表示されます。ューサー側 からみると、シェルはシステムの中身を覆う、、殻 " のよう な彳難リを担っているのです。 UNIX にはいろいろなシェルがあります。基本的なも のとしては sh や csh 、これらをベースに拡張した bash や tcsh 、 zsh などがあり、ユーサーカ軒みに応じて選ぶこ とができます ( 商用の UNIX で標勺にインストールさ れているのは、 sh 、 csh 、 ksh くらいでしよう ) 。ユーザー がログインしたときに起動されるシェルを、とくに、、ログ インシェル " と呼びます。ログインシェルは、ユーサー情 報の一部として /etc/passwd などに書かれています。ュ ーザーカリ用できる正当なシェルは、 /etc/shells という ファイルに当求されています 6 6 "/bin/sh" のよ引シェルの名前を絶対パスで 1 行に 1 っすっ言己主 UNIX MAGAZINE 1998.7 します。 /etc/shells に登録されていないシェルをログインシェ ルに設定していても、普通にログインするかぎりは問題あ りません。しかし、 ftp コマンドてマシンにアクセスする と /etc/shells がチェックさそこに登録されていない シェルを使っているユーサーはアクセスできないイはみに なっています。 すべてのユーザーに共通するシェルの設定ファイル として、 /etc/profile ()h の場合 ) 、 /etc/csh. cshrc と /etc/csh. login 、 /etc/csh. logout (csh の場合 ) が用意 されています 7 。これらの設定ファイルは、ユーサー との設定ファイル ( ホーム・ディレクトリの . pr 。 file や . cshrc 、 .login など ) より則に読み込まれるため、すべて のユーザーに共通して使わせたいシェルの設定を書いてお くと便利です。ただし、この仕組みは UNIX のシステム やシェルごとに違うので、マニュアルなどて市忍してくだ プリンタに関する設定 ローカルマシンにプリンタをつないだり、リモートマシ ンに接続されたプリンタをネットワーク経由で利用する場 合は、 /etc/printcap というファイル (Solaris 2.6 では /etc/printers. conf) に成疋を言当します。プリンタごと に、プリンタ名や接続しているデバイスの名前、スフ。ール・ ディレクトリのパス名などを指定します。 このファイルについては、プリンタの設定方法やー里コ マンドを説明するときにとりあげます。 ファイルシステムの構成に関する設定 前回、ファイルシステムの構造を簡単に説明しました。 そのなかで、 UNIX ではディスクをパーティションに分 け、各パーティションのファイルツリーを、、マウント ' という操作で接ぎ木することにより、 1 つの大きなツリ ー構造を形成していると書きました。どのパーティショ ンをどのディレクトリにマウントするかは、 /etc/fstab というファイルに書かれています (Solaris などでは、 /etc/vfstab というファイルを使います ) 。マシンは起動 時にこのファイルを参照し、必要なパーティションを自動 的にマウントします 8 。 7 インストール直後は、これらのファイルの中身はすべてコメントアウトさ れています。 8 自重加勺にマウントするカ驕かはパーティションごとに誕定できます。 157
トーの その他のう予についても、幅広い麪爰および協力態彡 ) 連載 .. /FreeBSD ノー UNIX MAGAZINE 1998.7 なお、 4.4BSD のローカル・ファイルシステムとして 理由をみていこう。 実行すると、いらいらするはど時間がかかる。以下でその 不要なファイル群をまるごと削除しようと、、 rm-fr*" を ファイルを作成したり削除したりするのは遅い。とくに、 な制限よりもはるかに高速な処理が可能である。しかし、 書込みがキャッシュの用内に収まっていれは、物理的 仕ではキャッシュをうまく利用しているので、言もムみや ク ) といった物理的な制限により入出力の速度カ鴃まる。 ハードディスクはディスクの回転やヘッドの移動 ( シー け継ぎ、さらに改良を加えている。 多土してきた。 FreeBSD の ufs は 4.4BSD の飛を受 け継ぎつつ、大幅な改良カ功日えられて BSD の一部として は、オリジナルの UNIX のファイルシステムの構造を受 は、、 Berkeley Fast Filesystem ( 他 ) " と呼はれる。これ いが、ほかの UNIX のファイルシステムと区別する場合 ( 大文字のこともある ) という名前で参照されることが多 れるファイルシステムである。 FreeBSD の内部では ufs 今回とりあげるのは、ローカルのディスク上に構築さ ローカノレ・ファイノレシステム 興未のある方はぜひ参考文献をあたっていただきたい。 介する。以降の説明は便宜 . E かなり簡田翻ヒしてあるので、 らみてもなかなかおもしろいので、そのイ督はみについて紹 ソフト更新は実際に役立つばかりでなく、理言勺な面か いだろう。 メーリングリストて現在もっともホットな話題といってい きる。その効果の大きさに期待か集まっており、開発者の る技法の 1 つで、操作によっては引擢的な向 - ヒを体感で が進められているローカル・ファイルシステムを高速化す ソフト更新 (soft updates) は去も丘 FreeBSD で開発 ソフト更新 それることになるが、ご容赦いただきたい。 強く要請さ現在調整中である。そのため今回は話題が バについても、独自に着手している開発者との共同開発を もテーマとしてとりあげている EtherIink XL のドライ 強化カ蔀寉認された。現在私カ鯛発を進めており、本連載で は、 ufs のはかに、 Log-Structured Filesystem (lfs)' が用意された。 lfs は飛の構造をもとに、追記によって ファイルシステムかオ枷及できるようにしたものである。さ まざまなメリットが考えられるが解決すべき間題も多い。 けっきよく、 FreeBSD ではちゃんと使えるようになら メタデータ 換性のためと考えてよいだろう。 ステムである ext2fs もサポートしているが、 また、 FreeBSD では Linux のローカル・ファイルシ ないまま放置されてしまっている。 もつばら互 さらに、 1 つの変更ごとに書込み命令を発行するのでな updates) である。 に向上する。このガ去がメタデータの非同期更新 (async 機能とあわせてメタデータの書換えについての性能は大幅 み命令の順番を整理してから書込みをおこなうので、この ドライバでは、なるべくシークカ眇なくてすむように書込 てもよさそうに思える。実際、ハードディスクのデバイス く、書込み命令を発行して終了を待たすに次の竹喋に移っ 単純に考えると、その場で書込みの終了を待つのでな い音をたてるのを経験している人も多いだろう。 が近くにあるとシーク時の音が連続してガラガラとうるさ り数ヨ度しか削除できないことになる。また、マシン ークが 1 つのファイルごとに繰り返されるので、 1 秒あた さきほど挙げた、、 rm -fr * " を考えてみよう。ーヒ記のシ がかかる。 でもネックになるところで、数 ms から十数 ms もの時間 まれることになる。シークはハードディスクの重川乍のなか に分かれているため、シーク時間も更新に必要な時間に含 呼はれている。メタデータはディスク上のいくっかの領域 これはメタデータの同期更新 (synchronous updates) と い、正常に終了したことを石忍してから次の作業に移る。 を更新するだけでなくその場でディスクに書込みをおこな 他ではこのメタデータに変更が生した場合、キャッシュ こでは細かい区別は考えないことにする。 システムごとの通し番号である inode などに分かれるが、 名前を管理するためのディレクトリ・エントリやファイル るメタデータとがある。メタデータはさらに、ファイルの ルの中身であるデータと、ファイル管理のための情報であ ファイルシステム上の情報には、大きく分けてファイ 107
連載 / UN Ⅸの玉手箱ー② 図 3 FreeBSD の /etc/motd FreeBSD 2.2.6—RELEASE (NULL) # 0 : Tue Apr 14 15 : 07 : 20 JST 1998 We1come to FreeBSD! If the doc distribution has been loaded 0 Ⅱ this machine , the FreeBSD Handb00k wi11 be in file : /usr/share/doc/handbook and the FAQ in file : /usr/share/doc/FAQ Type /stand/sysinstall tO re—enter the installation and configuration utility. ってメッセージを適切なログファイルに言求します。これ らのログファイルは日判肋釜つにつれて肥大化していくた め、 cron か疋期的にログファイルを新しいものに入れ替 え、旧くなったログファイルを消去します。 cron は、一ヨ殳ューサーでも使えます。ヨ列を挙げると、 自分のホーム・ディレクトリにあるイなファイル ( たと えは、 MuIe が自動的に生成するェ ~ や # リなどの バックアップ・ファイル ) を定期的に探して削除するよう な処理ができます。ーヨ殳ューザーに関する cron の設疋は /var/cron/tabs/ ユーザー名 " というファイルに登録さ れますが、システム全体の管理に関する cron の設定は /etc/crontab ファイルに当求さスーパーユーザーの 権限で実行されます。 Solaris では、 /var/spool/cron/crontabs ディレク トリにすべてのユーサーの設疋が置かれています。 言岩田はいすれ説明しますが、 /etc/crontab には、デフ オルトの状態で下記のファイル ( シェル・スクリプト ) を 実行する設定力当されています。 ・ /etc/daily 1 日に 1 回実行さパスワード・ファイルなどのバッ クアッフ。や、 df コマンドによるディスク容量のチェッ クなどの処理をおこないます。ネットワーク竟では、 電子メールのログファイル (/var/log/maillog) がも っとも頻繁に更新されるので、このファイルのローテー ション 11 もおこなわれます。 BSD/OS て処理を追加す るときは、 /etc/daily. local ファイルを利用します。 /etc/weekly 1 週間に 1 回実行さシステムのメッセージカ蠢求さ れる /var/log/messages ファイルなどのローテーショ 11 現在のログファイルの名前を変史し旧くなったログファイルを削除 する処理のことてす。 UNIX MAGAZINE 1998.7 ンを実行します。 BSD/OS で処理を追加するときは、 /etc/weekly. local ファイルを利用します。 ・ /etc/monthly 1 カ月に 1 回実行するメンテナンス処理を言当します。 BSD/OS て処理を追加するときは、 /etc/monthly. local ファイルを利用します。 マシン管理と ( 妾の関係はありませんが、ユーサーが ログインした際に表示されるメッセージは /etc/motd と いうファイルに言当求されています。 FreeBSD では、デフ ォルトの /etc/motd は図 3 のような内容です。これを活 用して、たとえば「 6 月 18 日午後 11 時から 1 時間、ディ スクを増設するためにマシンを停止します」といった情報 を書いておけば、各ューサーにいちいちメールて知らせる 手間が省けます。 マシンの起動設定 UNIX マシンに電源を入れてユーザーがログインでき るようになるまでのあいだに、システムはさまざまなイ乍業 をおこないます。ローカルなハードディスクのマウント や、ネットワーク・インターフェイスなどのハードウェ アのセットアッフ。、あるいはシステムの運用にかかわる デーモン・プログラムの起動と、システムがもっとも忙し く働く日判りといえるでしよう。 /etc の下には、マシンの起重加におこなわれるこれら の処理をしたファイル群も置かれています。ただし、 その構成は UNIX の不鶤頁ごとにかなり違います。 4.4BSD をもとに開発された FreeBSD と BSD/OS にも違いがあり、それぞれ次のようなファイル構成になっ ています 12 12 このあたりは、 Solaris などの OS ではかなり違います。 /etc/ inittab ファイルなどを参考にして、ある程度の動きを知るといいで 159
Memory-Mapped Files ■ ているときは、分散したプロセスがメモリに対するはかの プロセスの変更をただちに認識することは保証できない。 MAP-PRIVATE に設定して、ファイルをメモリにマッ フする場合、アプリケーションはバッフア内のメモリを修 正できるが、変更はオリジナルのファイルには . 央されな い。メモリバッフアのサイズを拡大することがなけれは、 さらにメモリを割り当てることもできる。メモリバッファ を拡大する場合は、メモリ割当てのシステムはメモリに対 する直前の変更をすべて上書きしながら、 ノヾッフアをリ ロードすることになる。ライプラリの初期化については、 「匆イ匕の節で諞する。 プロセスの同期 データのロードを終了すると、 firstBlock ポインタがトッ ないシステムではさらに慎重に対処する。 1 次プロセスが いない部分をかならすメモリ中で 0 に設定する。そうなら Solaris の mmap の実装では、ファイルの初期化されて やメモリイメージを延長するときにはつねにそうするか ) 、 一部をマッピングするとき ( 新しいメモリイメージの作成 る。実際、初期化されていないデータを含むファイルの 素がかならす 0 に初期化されるように割り当てられてい このデータ構造は、 mmapCalloc を使って、 2 つの要 } synchronizer ; void *firstB10ck; isFinishedLoading ; int struct —synchronizer { ータ構造は次のようになる。 使ってメモリを割り当て始めたときに作成される初期のデ ド焉正しなくてはならない。 1 次プロセスが、 mmap を ている。このプロセスははかのタスクによるデータのロー のプロセスを 1 次プロセスに指定するアルゴリズムをもっ 前述したように、我々の分散アプリケーションは、 1 つ 使って、同期データを伝達している。 でおこなえる。我々は、メモリイメージ本体の地頁部分を 信、ファイル・ロッキングをはじめとするさまざまなガ去 に論しておこう。同期は、ネットワークやプロセス間通 割当てライプラリには含めていないが、完全を期するため ある。これは特定の用途の場合なので、 mmap のメモリ 分散アプリケーションに 1 つ以 - ヒの同期点を置く必要が mmap のテクニックを有効にするためには、あらゆる 94 プレベルのデータ構造を指し、 isFinishedLoading が 1 ( 真 ) になる。こうして、ほかのあらゆるプロセスがファ イルをメモリにマップし、それぞれのシミュレーション を実行することができる ( 図 2 ) 。 我々は NFS でマウントしたファイルでこのテクニッ クを利用していたので、同期の扱いは慎重におこなった。 同期点で待っている各プロセスは、ファイルを閉して、そ れぞれのデータ構造の同期をチェックするあいだ 5 秒待 つ。ファイルのあらゆる変更点がネットワーク間で正し く更新されたことを石忍する。さらに、 1 次プロセスとシ ミュレーションの残りのプロセスとの一貫性を糸財寺するた めに、たとえ 1 次プロセスであっても閉じて、ファイル をアンマップしてからメモリに再マップする。 初期化 UNIX MAGAZINE 1998.7 れるかプライベートでマップされるかを決定する。共有で れたパラメータの値が、そのファイルが共有でマップさ すに、、一 1 " を返す。また、 setMMapWriteFile() に渡さ ToBaseAddress() も setMMapFileName() も重力作せ ったんライプラリかオ川月化されると、 mapMMapMalloc- 化して使用可能にする前に使わなければならない。い MMapFileName() は、 beginMMap() でライプラリを 示した。 mapMMapMallocToBaseAddress() と set- 期化し、制御するためのインターフェイスは、図 1 に mmap べースのメモリ割当てライプラリの一部を初 の属性を缶衂しなければならなかった。 謝妾するプロックとして共有する必から、我々はこれら だろう。しかし、これらのメモリイメージをイ反想メモリに り当てる際に、 1 つ以 E のファイルを使用するものもある る。こうしたシステムのなかには、 mmap でメモリを割 ル名を割り当て、アドレスをマップするようになってい のパラメータの属性を呼び出したものに通知せすにファイ 町寉な初期化を必要としないが、その場合はシステムがそ かの mmap べースのメモリ割当てシステムはこのような ( S 。 laris カ甘是供しているような ) は しなければならない。 イル名とファイルのマップ先であるべースアドレスを設定 ーションて利用できるようにする前に、マップされるファ loc システムは、明示的なネ川月化を必喫とする。アプリケ オ票售の malloc システムと違い、 mmap べースの mal-
く、適当な間隔で変更を央させるメタデータの遅延更新 (delayed updates) という方法もある。この方法では書 込み命令の数を大幅に咸できるので、さらに性能の矼 E が見込める。 ファイルシステムの整合性 それでは単純にメタデータを引ミ同期更新や遅延更新に変 更すればよいかというと、そこで間題になるのがファイル システムの整俐生である。 マシン上でなんらかの作業をしていると、カーネル内で 管理されているファイルシステムの清報と、実際のディス ク上のデータのあいだにはかならすといっていいはど違い がある。この違いを埋めるための書込みか疋期的におこな われているため、ディスクの内容はつねに健全に保たれて いる。 こで、なんらかの事故 ( 停電など ) により書込みがお こなわれなかったとしよう。すると、更新されるべき情報 の一にが失われてしまう。そオ・けごけならまだしも、ファイ ルシステムの一部カれてしまう可能生もある。 たとえば、 root によるファイル a の削除と、一殳ユー ザーによるファイル b の作成がほば同時におこなわれた としよう。このとき、次の 4 つの変更が生じる。 1. a のデータ削除 2. a のメタデータ削除 3. b のメタデータ作成 4. b のデータ作成 同期史新の場合、 1 つの変更カ鮗るまで次の変更はおこ なわれない。したがって、処理が途中で止まってしまう と、 1 のみ終了、 1 と 2 カ鮗了、 1 から 3 まで終了という 3 つの場合が生じうる。 1 と 2 か終了していた場合は、たんにファイル a か削 除された状態だから間題ない。 1 のみ終了の場合は a のメ タデータのみが、 1 から 3 まて終了の場合は b のメタデー タのみがファイルシステム上 ( コり残される。 こういったよけいなメタデータは、ディスク上の領域を 連載 /FreeBSD/—トーの 108 になっていることにお気づきの読者も多いだろう。そこで こで、作成と削除ではデータとメタデータの啣が逆 ツールて検出して削除するのも簡単である。 すこし消費するほかはたいした悪景ない。 fsck などの 3 と 4 を逆にしてみると、 b のデータだけがディスク上 に残るという事態も起こりうる。こうしたデータを検出す るにはディスク上の広い領域を検索しなけれはならないた め、復旧に日判肋ゞかかってしまう。 このように、ディスク上のデータやメタデータのあいだ に一定の依存関係をもたせることでメンテナンスの手間を 減らすことができる。、、ファイルシステムの整合匪がとれ ている " とは、この依存関係を壊さないように操作がおこ なわれていることを指す。 こでファイルを建築物にたとえてみると、メタデータ が土台、データがの建物に相当する。土台がなけれは建 物はちゃんと建てられない。撤去する場合は、建物を壊し てから土台を取り去るという国茅になる。処理が途中で止 まった場合、土台だけか残ることはあっても、土台のない 建物が残ることはありえない。建築物の場合は物理的な制 限から自然に整合匪がとれる。しかし、ファイルの場合は 人為的に制限を導入しなければならないわけである。 さて、非同期更新、遅延更新の場合はどうだろう。何も 考えすに処理の順番を入れ替えてしまうと、ファイルシス テムの整合カ躱たれないのは前述のとおりである。 さらに、前出の 4 つの変更のうち、 2 と 3 の処理だけが 終った状況を考えよう。たまたまこの a と b のメタデー タか 1 司じ工ントリを使用していた場合、本来 root のもの であったファイル a の内容がファイル b として一殳ュー ザーから参照できるといった、セキュリティ上の問題が生 しる可能性もある。前述のたとえでいうと、建築物の土台 だけいきなりすけ替えられてしまう状況に相当するが、そ んなことがあっては困るわけである。 一方、同期更新ならファイルシステムの整合性は確実に 保たれるので、堅実なガ去といえる。建物を壊し、土台を 撤去するという手順を踏んでいることを逐ーイ寉認しながら 建築を進めるからである。 FreeBSD ではローカルのファイルシステムをマウント するときに非同期 : 甦斤を尺することもできるのだが、 れは推奨されていない。通常、 FreeBSD で非同期更辛励ゞ 使われるのはインストール時だけである。インストールが 中断してしまった場合は最初からやりなおすことになるの で、問題が生じるおそれはほとんどない。 ちなみに、 FreeBSD での非同期更新は同期更新にくら べていくらか速い程度である。これは、非同期更新での利 UNIX MAGAZINE 1998.7
連載 UN Ⅸの玉手箱ー② こでのンヾーティション " とは、ハードディスクはも ちろん、フロッピーディスクや CD-ROM 、メモリ・ファ イルシステム (MFS) など、さまざまな記慮装置を指しま す。 /etc/fstab は、マシンに直イ妾続された機器だけで なく、リモートマシンのファイルシステムをマウントする 際にも使えます。ローカルなディスクについては、 OS の インストール・プログラムが /etc/fstab にイ泉してくれま す。しかし、ディスクを増設したり、リモートマシンのフ ァイルシステムをマウントするときは、自分で /etc/fstab にエントリを書き加えなければなりません。 /etc/fstab ファイルの言岩田は、ファイルサーバーの設 定方法などとあわせて次回以降にとりあげます。 BSD/ OS では、 /etc/fstab のサンフ。ルファイル (/etc/fstab. sample など ) が用意されており、 CD-ROM や DOS な どのファイルシステムを扱う例か書かれているので参考に するといいでしよう。 端末やシリアルポートに関する設定 UNIX はマルチューサーの OS ですが、複数のユーザ ーか 1 司時に 1 台のマシンを使えるのは、 Ethernet などの ネットワークに接続されている場合だけではありません。 UNIX マシンのシリアルポートにノート PC などを接続 すれば、 2 人のユーザーで同しマシンを共用できます。あ るいは、 X ウインドウ・システムで xterm や kterm な どのウインドウを複数開けは、あたかも 1 人のユーサーが 複数の端末を扱っているような感覚で使えます 9 。 シリアルポートの制御方法は、 UNIX ごとにかなり違 います。たとえば、 SoIaris などの SVR4 をベースにし た UNIX では SAF (System Access Facility) という 仕組みカイ吏われています。 /etc/ttys は、シリアルポートに接続された端末や仮 想端末を制御するための設定ファイルで、ログインでき るシリアルポートやコンソールの設定をおこないます。 /etc/gettytab には端末に関する属性情報か書かれてお り、端末の通信速度をはしめとする各種のパラメータか設 定できます。 シリアルポートは、シリアルケープルでマシンどうしを 直接接続する場合だけでなく、モデムと電話回糸釜由でリ 9 ウインドウ・システム上の端末 (xterm や kterm など ) や、ネッ トワーク環境でリモートマシンにログインしたときの画面は、、仮想端末 (pseudo terminal)" と呼ばれます。 158 モートマシンにアクセスするときにも使います。モデムで リモートマシンにアクセスする際は、 UNIX の tip コマ ンド (SoIaris などでは cu コマンド ) などを利用してロー カルなマシンをリモートマシンの端末として扱うことがで きます。この場合、端末の属性情報は /etc/remote ファ イル、接続先の電話番号は / etc / ph 。 nes ファイルで管理 されます 10 物理的な端末であるか佖想端末であるかにかかわらす、 端末の画面は /etc/termcap というデータベース・ファイ ルの言当に従って制御されます (Solaris などでは、 ter- minfo というファイルを利用します ) 。 端末に関する設定ファイルについては、次回以降で詳し く紹介します。モデムを介してリモートマシンの端末とし て使う場合の設定ガ去は、「 UNIX の道具箱ーー名イヤル アッフ鮟続 ( 1 ) ~ ( 3 ) 」 ( 岡山聖彦・片山喜章、 1994 年 12 月 ~ 1995 年 2 月号 ) なども参考にしてください。 マシンの管理に関する設定 マシンをつねに良好な状態で漣用するには、日常的な管 理が欠カせません。たとえば、ディスクが溢れた場合、新 たなディスクを増設できなけれは、不要なファイルを削 除したり、パーティションの構成をみなおす必要があり ます。 しかし、人間がマシンをつねに見張っているのは大変 ですし、忘れる可能性もあります。そこで、 UNIX では cron というデーモン・プログラムを使って、 1 日に 1 回 ディスクの容量を調べるといった定期的な竹喋をイ躄〒させ ることができます。 UNIX では、システムやサービスに関する記録がさ まざまなログファイルに保存されます。たとえば、シ ステムが起動するときのメッセージやエラーメッセー ジは /var/log/messages に、電子メールの送信記録は /var/log/maillog に言当求されます。これらのログファイ ルは、サービスを処理するデーモン・プログラムなどか直 接作成することもありますが、多くは syslog というデー モンがログファイルへの言当求を管理しています。システム が出力するメッセージはいったん syslog デーモンに送ら オ syslog は /etc/syslog. conf という成疋ファイルに従 10 FreeBSD では、これらのはかに、モデムに関する情報かイ求された /etc/modems ファイルがあります。 UNIX MAGAZINE 1998.7
連載 UN Ⅸの玉手箱ー② 両者に甬する起動言諚ファイル するときに利用します。デフォルトの状態では設定変更 のためのサプルーチンが定義されているだけで、これら /etc/rc を使う部分はコメントアウトされています。 マシンか起動するとき、最初に実行される処理を言し たファイルです。ローカルに接続されたハードディスク BSD/OS 独自の言聢ファイル をチェックしてマウントし、スワップ・パーティショ ・ /etc/boot. default ンを利用できる状態にしてから、以、降の起動設定ファイ FreeBSD や BSD/OS をはしめとする多くの UNIX ルを実行します。 では、システムの起動時にプートプログラムが実メ ・ /etc/rc. local モリの容量チェックなどをおこない、その後にシス /etc/rc て最後に呼び出されるファイルで、」助日インス テムのカーネルを読み込みます。 BSD/OS の /etc/ トールしたソフトウェアのデーモン・プログラムを自動 boot. default はプートプログラムのための設定ファイ 的に起動させたい場合などは、このファイルに設定を追 ル 14 で、デバイスに対する割込み番号 (IRQ) やルート 加します。 デバイスク旨定など、プートプログラムか実行される際 の重川乍か設定できます。 FreeBSD 独自の起動言ファイル ・ /etc/netstart ・ /etc/rc. conf FreeBSD の /etc/rc. conf に相当するファイルです マシンのホスト名や IP アドレスを設定したり、シス (FreeBSD にも同名のファイルがありますが、通常は テムや各種デーモンのパラメータを設定するファイルで 使われません ) 。マシンのホスト名やネットワーク・イン す 13 。その他の /etc/rc. * ファイルは、 /etc/rc. conf を ターフェイスの IP アドレスの設定、各種のネットワー 参照してデーモンの起動などの処理をおこないます。 ク・デーモンの起動などをおこないます。さきはど述べ ・ /etc/rc. firewall たように、 FreeBSD の /etc/rc. conf には成疋のノヾラ FreeBSD をファイアウォール・マシンとして使う場合 メータだけカ己述され、その他のファイルがこれを参 に必要な設定をおこないます。 照して処理します。一方、 BSD/OS の /etc/netstart ・ /etc/rc. i386 は、パラメータの定義のほかにデーモンの起動などの処 PC 互換機のアーキテクチャに依存する設定 ( パワー 理もおこないます。 マネージメントやキーポード、コンソールなど ) をおこ ・ /etc/rc. configure/* ないます。 /etc/rc. configure はディレクトリで、その下にキーポ /etc/rc. network ードの設定などをおこなうシェル・スクリプトが置かれ /etc/rc. conf で設定された情報をもとに、ホスト名や ています。 ネットワーク・インターフェイスの IP アドレスなどを ・ /etc/rc. hardware/* セットアップしたり、ネットワーク・サービスにかか /etc/rc. configure と同様に /etc/rc. hardware もディ わる各種デーモンを起動します。 レクトリで、ハードウェアの設疋に関するシェル・ス ・ /etc/rc ・ pccard クリプトか置かれています。デフォルトの状態では、パ PC カードに関する設定をおこないます。データベー ワー・マネージメントと PC カードドライプに関する ス・ファイル /etc/pccard. conf を参照します。 Eth- 疋ファイルがあります。 ernet カードについては、 PC に挿入すると /etc/ pccard-ether というスクリプトか実行されます。 そ也 ・ /etc/rc. serial 最後に、ローカノい竟に対する設定ファイルのうち、上 端末やマウスなど、シリアルポートに関する設定を変更 己の分類に入らないものをいくっか挙げておきます。 13 以前は /etc/sysconf でしたが、 2.2.2-RELEASE から /etc/rc. 14 FreeBSD では /boot. config がこれに相当します。 conf に変わりました 一三ロ 160 UNIX MAGAZINE 1998.7
連載 UN Ⅸの玉手箱ー② /etc/dm. conf UNIX MAGAZINE 1998.7 のインストールに必要なディレクトリ情報か書かれた FreeBSD のバイナリ・パッケージには、パッケージ リ・パッケージをインストールする際に使われます。 mtree コマンドは、たとえば FreeBSD のバイナ かれており、 mtree というコマンドが利用します。 有者やアクセス権限など ) を記述したファイル群が置 的なディレクトリ構成と各ディレクトリの属性 ( 所 /etc/mtree ディレクトリの下には、システムの標準 ・ /etc/mtree/* が man コマンドを使って参照できます。 ファイルにその場所を書き加えれは、すべてのユーザー アルを標ま純勺ではない場所に置いた場合、これらの設定 ます。フリーウェアなどをインストールして、マニュ イルで、オンライン・マニュアルの置き場所を設疋し 前者は FreeBSD 、後者は BSD/OS に付属するファ ・ /etc/manpath. config 、 /etc/man. conf 列カ亟ってくるはすです。 (Japan Standard Time : 日 : 本標準芋 ) " という文字 成疋し、、、 cat /etc/localtime" を実行すると、、、 JST ませんが、インストール時にタイムゾーンを、、日本 " に か書かれています。通常のテキストファイルではあり マシンの属するタイムゾーン ( 時間帯 ) に関する情報 ・ /etc/localtime プログラムを起動 - す - るイ督はみになっています。 は、 dm が /usr/games/hide ディレクトリにある実行 名などか書かれており、このチェックを通過した場合に /etc/dm. conf には、ゲームを実行できない時間や端末 ってゲームの実行を許可するかどうかを判断します。 さ dm は設定ファイル /etc/dm. conf の記述に従 ューザーがゲームコマンドを起動すると dm が実行 ラムです ) 。 master" の略で、ゲームの実行を缶膽卩するためのプログ ポリック・リンクになっています ()m は dungeon ームコマンドの多くは、 dm というコマンドへのシン 実行ファイルなどが置かれます。しかし、これらのゲ のゲームをインストールすると、 /usr/games の下に キャラクタベースのゲームが含まれています。これら 宮探検ゲーム ) や hangman ( 単語当てゲーム ) など、 FreeBSD や BSD/OS のノヾッケージには、 rogue ( 迷 “十 MTREE-DIRS ”というファイルカ忝付されている ことがあります。 pkg-add コマンドを使ってバイナリ・ パッケージをインストールする場合、 mtree コマンドを 利用して十 MTREE-DIRS の内容と現在のディレクト リ構成を上交し足りないディレクトリを作り、ファイ ルを所定の場所にコピーするイ督はみになっています。 ・ /etc/XF86Config フリーの X ウインドウ・システムである X い ee86 の 成疋ファイルです。 FreeBSD では、 XFree86 か驃準 のウインドウ・システムです。ェデイタで設定ファイ ルを作成することもできますが、通常は XFree86 のセ ットアップ・プログラムである (/usr/XIIR6/bin/) XF86Setup などによって自動生成されます。 BSD/OS のノヾッケージにも XFree86 の X サーノヾー が含まれていますが、 Accelerated-X (Xaccel) も付 属しており、おもにこちらを利用します。どちらかとい うと、 XFree86 のほうか新しいピデオカードに早く対 応する傾向にあるので、新しいカードを使った PC で Xaccel カカかない場合は XFree86 を試してみましょ 、 15 ・ /etc/Xaccel. ini 商用の X ウインドウ・システム AcceIerated-X の設 定ファイルです。通常、 (/usr/X11R6/bin/)Xsetup というセットアップ・プログラムによって自重加勺に作 成されます。 ☆ 以 E 、ローカルな竟に関する /etc の成疋ファイル群 をざっと紹介しました。ネットワーク関連のファイルもま とめてとりあげたかったのですが、あまりにも数が多くな りすぎるので、次回にまわすことにしました。 ということで、次回はネットワーク里の設定ファイル をとりあげます。各ファイルの言岩田と関連するツールにつ いては、紹介をひととおり終えてから説明する予定です。 15 ただし、 BSD/OS に付属の XFree86 のサーバーはバージョン 3.1.2 とやや旧いので、去用阪第点ではバージョン 3.3.2 ) を入手 してインストールしたはうカ、いでしよう。 161
null /etc のファイル詳 前回は、ファイルの、、いれもの " に相当する UNIX ファ イルシステムの構造や、ディレクトリ・ツリーの構成など を紹介しました。 / や /bin 、 /usr など、パーティションの 構成も含めて、さまざまなファイルがうまく整理整頓され ていることがお分かりいただけたのではないでしようか。 これらのディレクトリに収められているファイルは、い すれもマシンの運用に欠かせないものばかりです。しか し、これらのなかでも、運用に密接にかかわるファイルが 数多く置かれている / etc ディレクトリはとりわけ重要な 位置を占めています。 UNIX にかぎらす、引も丘の OS のインストール・プログ ラムはかなり親切に作られています ( だからといって、、使 いやすい " とはかぎりませんが・ ・・ ) 。システムによって は、ユーサーやネットワークはもちろん、 X ウインドウ・ システムなどについての設疋もインストール・プログラム がしてくれます。さらに、 OS のインストール後にマシン の設疋を変更するためのツールやコマンドが用意されてい ることも多いので、ひょっとすると、、 / etc の下のファイ ルを直接触ったことがない " 人もいるかもしれません。 しかし、専用の管理ツールを使って設定を変更した場 合も、その結果は / etc のファイルに反映されます。です から、これらのファイルを直接触る、触らないにかかわ らす、 /etc にどんなファイルがあり、それらがどのよう な働きをするのかを理解しておくべきでしよう。そうすれ ば、マシンにトラブルか起きて管理ツールが使えなくなっ ても、落ち着いて対処できるはすです。 そこで、今回からは / etc にある設疋ファイルをトピッ クごとにとりあげ、個々の設定ファイルに関する情報や関 連するツールの使い方などを紹介することにします。 今回は、手始めとして / etc のファイル群をひととおり 154 、それぞれがどのような役割を担っているかをみてい きましよう。なお、前回も書いたとおり、しばらくのあい だは FreeBSD 2.2.6-RELEASE と BSD/OS 3.1 を対 象に話を進めます ( 明記しない場合は、両者に共通する設 定ファイルを指します ) 。さらに、必要に応して solaris にも触れるつもりです。 インストール直後の / etc OS をインストールした直後の状態でも、 /etc の下には たくさんのファイルが置かれています。インストール直後 に /etc で、、 ls —F" を実行すると、 FreeBSD では図 1 、 BSD/OS では図 2 のようになります。 find と wc コマンドを使って / etc にあるファイルを数 えたところ 1 、インストールガ去によって多少の違いはあ りますが、 FreeBSD は 94 個、 BSD/OS は 204 個もあ りました。設定のサンプルファイル 2 なども含まれていま すが、それらを差し引いても数イ固にはなります。 ファイルといっても、マシンを虫で運用する際に必要 な設定ファイル、あるいはネットワークに接続するための 情報や基本的なネットワーク・サービス ( 電子メールなど ) に関する設定ファイルなど、その内容はさまざまです。 そこで、これらを大雑把に、、ローカルな工鼬竟の設定 " に 関するものと、、、ネットワーク竟の設定 " に関するもの とに分け、それぞれの項目について嬲里するファイルの概 2 1 find /etc -type f lwc" を実行すると、ディレクトリやシンポリ ック・リンクなどを除くファイルの数が分かります。これらのコマンドの 巖物日は、オンライン・マニュアル find (1) や wc ( 1 ) を参照してくだ とくに、 BSD/OS では samba などの設定サンフ。ルか数多く収められ ています。 UNIX MAGAZINE 1998.7