conf - みる会図書館


検索対象: UNIX MAGAZINE 2004年4月号
8件見つかりました。

1. UNIX MAGAZINE 2004年4月号

プログラミング・テクニック 74 図 3 /etc/rc. conf ファイルの言蒄入み elif [ ーて /etc/rc . conf ] ; then debug "Sourcing /etc/rc . conf (/etc/defaults/rc . conf doesn't exist) . /etc/rc . conf _rc_conf_10aded=YES します。 if [ —r /etc/defaults/rc . conf ] ; then debug "Sourcing /etc/defaults/rc . conf'l /etc/defaults/rc . conf source_rc_confs source-rc-confs は /etc/defaults/rc. conf ファイルで 定義されており、デフォルトでは /etc/rc. conf ファイル と /etc/rc. conf. local ファイルを読み込むための関数とな っています。ほかの設疋ファイルもこの関数のなかで読み 込んでいます。 /etc/defaults/rc. conf ファイルがない場 合は、直接 /etc/rc. conf ファイルがあるかどうかを確認し ます。ファイルがみつかれば、その内容を読み込みます ( 図 3 。図中の debug については彳 ) 。 売込みが終ると、ファイルを読み込んだことを示すため に -rc-conf 」 oaded 変数に文字列 YES を代入します。 こで値を代入しておくことで、再度この関数が実行された ときにも、ファイルの読込みを繰り返さずにすむようにな っています。 標準的な設定ファイルの読込みが終ったら、続いて特 load-rc-config 関数では、どのコマンドに対する設疋を 定のコマンド用の設定ファイルを読み込みます。このた 読み込むのかを指定する引数が必須です。ここでは、引数 めに、さきほど引数の値を格納しておいた -command 変 が正しく指定されているかを確認し、指定されていなけれ 数を使います。この変数に格納された名前のファイル名 ば工ラーメッセージを出力します。 が /etc/rc. conf. d ディレクトリにあるかどうかを調べ、あ 次に、 rc スクリプト群のための設定ファイルとして、 ればそのファイルの内容を読み込みます。 /etc/defaults/rc. conf と /etc/rc. conf を読み込みます。 ただし、同じファイルを 2 回読み込むのは無未なので、 1 if [ -f /etc/rc . conf . d/"$_command" ] ; then 度設定ファイルを読み込んだあとで再度この関数カ剛乎び出 debug "Sourcing /etc/rc . conf . d / - されても読込みを実行しないように、 -rc-conf 」 oaded 変 /etc/rc . conf . d/"$—command" 数の値を確認しています。この変数に値が設定されていな ければ、まだ設疋ファイルカ毓み込まれていないものとみ 最後に、旧い形式で指定されている変数に代入された値 なし、言囚みを実行します。 を、対応する新しい形式の変数に代入しなおす処理をおこ if [ -z "$_rc_conf—loaded" ] ; then ないます。この処理により、旧い形式の設定ファイルを使 最初に読み込むのは /etc/defaults/rc. conf ファイルで い続けながら、新しいリリースに移行できるようになりま す。このファイルがあるかどうかを確認し、あればその内 す。ここでは、ま $OS が FreeBSD であることを確認し 容を読み込みます。そして、 source-rc-confs 関数を実行 たあと、 portmap-enable 、 portmap-program 、 port- load rc config 関数 次に定義されている load-rc-config 関数は、引数と指 定されたコマンドに関する設疋を読み込むためのものです。 この関数では、まだ rc スクリプト群のための設定ファイ ルカ毓み込まれていなければ、それを読み込みます。さら に、引数として指定されたファイル名のファイルを / etc / rc. conf. d ディレクトリから検索し、ファイルがあればそ の内容も読み込みます。 実際のコードをみてみましよう。この関数でも、まず引 数を確認しています。 load—rc-config() ー c ommand= $ 1 if [ —z "$_command" ] ; then err 3 'USAGE: load_rc_config command ' ニ = ロ f i f i 97 UNIX MAGAZ 工 NE 2004.4

2. UNIX MAGAZINE 2004年4月号

連載 1 Zaurus with Linux 図 2 VPN キ寺の SL-Zaurus 側ログ Feb 9 23 : 50 : 29 10Ca1 れ ost rsaipsecd: rsaipm shutdown failed Feb 9 23 : 50 : 29 10Ca1 ost rsaipm: RSA BSAFE IPSEC—C RIPSECIPM version 1 . 0.0 library 1 . 0 . 0 Copyri ght 2001 RSA Security Austra1ia Pty Ltd. Copyright 1997 ー 2000 SSH Communications Security Ltd. Feb 9 23 : 50 : 29 localhost rsaipm: RSA engine version 4.0.1 Feb 9 23 : 50 : 34 localhost rsaipm: Phase—1 [responder] between unknown(any: 0 , [ 0 .. 0 ] = ) and ipv4(an y:O, [ 0..3 ] = 172 . 16.0 .254 ) fai1ed(14) ; NO proposal chosen. Feb 9 23 : 50 : 47 10Ca1 五 ost rsaipm: Phase—1 [initiator] between fqdn(udp: 500 , [ 0..8 ] =sl—zaurus) and ipv4(udp:500, [ 0..3 ] = 192.168.1.254 ) done. Feb 9 23 : 50 : 47 localhost rsaipm: Phase—2 [initiator] done bundle 1 with 2 SA's by rule 7 : 'ipsec * く ->ipv4—subnet(any:O, [ 0 .. 7 ] = 0.0.0.0 / 0 ) (gw:ipv4(any:0, [ 0..3 ] = 172 . 16 . 0.254 ) ) ' Feb 9 23 : 50 : 47 10Ca1 ost rsaipm : SA ESP [ b9f617b7 ] alg Crijndae1—cbc/16] + hmac [hmac—md5—96] bundl e [ 1 , 0 ] pri 0 opts src=ipv4—subnet(any:0, [ 0..7 ] = 0 . 0.0 . 0 / 0 ) dst=ipv4(any:0, [ 0 .. 3 ] = 172 . 16 . 1 . 2 ) Feb 9 23 : 50 : 47 10Ca1 五 ost rsaipm: SA ESP [ 49549be3 ] alg Crijndae1—cbc/16] + hmac [hmac—md5—96] bundl e [ 1 , 0 ] pri 0 opts src=ipv4(any:O, [ 0 .. 3 ] = 172.16.1.2 ) dst=ipv4—subnet(any:0, [ 0 .. 7 ] = 0 . 0 . 0.0 / 0 ) 図 3 / ヾスワードをえた場合のログ Feb 9 20 : 44 : 01 localhost rsaipm: Phase—1 Cinitiator] between fqdn(udp:500, [ 0..8]=s1—zaurus) and=> ipv4(udp:500, [ 0 .. 3 ] = 172 . 16.0 .254 ) fai1ed(24); Authentication failed. 置かれています。このディレクトリにある VPN. conf が VPN の設疋ファイルです。 VPN の設定が複数あるとき は、 VPN. conf 以外に VPNO. conf 、 VPNI. conf 、 ・・の ように VPNn. conf というファイルに個々の設疋がオ内さ れます。 VPN. conf は UTF-8 で言当されているため、ファイ ルの中身を表示するには、 nkf-2.0 などの UTF-8 に対応 した文字コード変換フィルタが必要です。ファイルを見る bash—2.05$ nkf -e /home/zaurus/App1ications/=> Network/modu1es/VPN. conf ー more とすればいいでしよう。 前回と同じ設疋にした場合、この VPN. conf ファイル の内容は図 5 のようになります。 なお、 VPN. conf では認証に利用するパスワードは暗号 化されて保存されています。このため、設定したパスワー ドに間違いがないかどうかまでは分かりません。 VPN で使われるプロセス VPN 接続時には図 2 のようなログカ第己録されますが、 このメッセージから、 VPN 接続時に使われるプロセスの 名前が分かります。ログに記録される情報は、次のような 形式になっています。 日時マシン名プロセス名 : メッセーシ UNIX MAGAZINE 2004.4 したがって、この例では、 VPN 関連のプロセスの名称 は、、 rsaipm" であることが分かります。 rsaipm は、 /usr/lib/rsaipsecc ディレクトリ ( 実体は /home/root/usr/lib/rsaipsecc) に置かれています ( フ ァイルの実体は /usr/lib. rom/rsaipsecc/rsaipm です ) 。 このディレクトリには、同じく口グに現れる rsaipsecd シ ェル・スクリプトも置かれています。 ところで、 rsaipsecd のう頁部分には、 # 2002 / 12 / 19 For Zaurus SL—C700. というコメントが書かれています。 SL ー C760 / 750 発売前 の開発段階では、 SL-C700 を IPsec 接続のテストに使って いたのかもしれませんね (SL-C700 には、標準では IPsec VPN の機能はありません ) 。 rsaipm の言又疋ファイル rsaipm が置かれている /usr/lib/rsaipsecc ディレクト リには spd というサプディレクトリがあり、そこには de ー faults. spd など、拡張子が、、 . spd " のファイル ( 以下、 spd ファイル ) がいくつか置かれています。内容を見ると、 れらのファイルは VPN 接続時に利用されるファイルのよ うですにれらのファイルの保護モードは 600 に設疋され ており、 root でなければ中身は見られません ) 。 この spd サプディレクトリは、 VPN 接続のたびにタイ ムスタンプか変化します。サプディレクトリに置かれてい る spd ファイル自身のタイムスタンプは変わらないので、 131

3. UNIX MAGAZINE 2004年4月号

連載 /UNIX Communication Notes /usr/pkg/sbin/httpd : % ldd /usr/pkg/sbin/httpd 図 6 Apache サーバーかイ吏用しているライブラリをみる 190 図 7 1 2 3 4 5 6 7 8 9 10 ー lssl . 3 = > /usr/lib/libssl . so . 3 -lcrypto . 2 = > /usr/lib/libcrypto . SO. 2 -lpthread. 0 = > /usr/lib/libpthread. SO. 0 —1apruti1—O.9 = > /usr/pkg/1ib/1ibapruti1—0. SO. 9 ー 1db4 ー 4.2 . 2 = > /usr/pkg/1ib/1ibdb4—4.2. so . 2 —lexpat .4 = > /usr/pkg/lib/libexpat . SO . 4 —1apr-O . 9 = > /usr/pkg/1ib/1ibapr-0. SO . 9 ー lm. 0 = > / us て / 1 土 b / 1ibm387. so . 0 ー lm. 0 = > /usr/lib/libm . so . 0 -lcrypt . 0 = > /usr/lib/libcrypt . SO . 0 —lresolv. 1 = > /usr/lib/libresolv. SO. 1 -lc . 12 = > /usr/lib/libc . so . 12 サブバージョン旨を使うための httpd.conf の変更 LoadModu1e dav—svn-module "/usr/pkg/lib/httpd/mod—dav-svn.so" A1ias /repository/ "/usr/local/httpd/repository/" く Location /repository> DAV svn SVNPath /usr/local/httpd/repository AuthType Basic AuthNa.me "Password for subversion services " AuthUserFi1e /usr/local/httpd/conf/passwd.webdav Require valid—user く /Location> ttp://subversion.tigris.org/ から入手できる。執筆時の最新のファイルは、 subversion ー 1.0.0. tar. bz2 である。これをダウンロードして展開し、 configure 、 make 、 make install とすればよい。ただし、 configure を実行するとき、 Berkeley DB などのライプ ラリを引数に指定しなければならない。ドキュメントをよ く読み、必要なライプラリを指定しよう。 Apache における言又疋 こまでに説明したソフトウェアをインストールした ら、準備作業は完了である。必要に応じて Apache の設 定ファイル httpd.conf を編集し、バージョン管理のため のデータベースなどを十内したリポジトリを作成する。 4. httpd.conf への〕皀加 以下では、 /usr/local/httpd/repository にリポジト リを作成することを前提に説明する。 まず、バージョン管理で利用するリポジトリの情報を httpd.conf に書き加える。図 7 が、 httpd.conf に追加 するバージョン管理のための言当である。 UNIX MAGAZINE 2004.4 ・ 1 行目の LoadModuIe で、ノヾージョン管理のためのバ ックエンド・モジュールをロードする設定を記述する。 サプバージョンを導入したときに、 mod-dav-svn. so も インストールされているはずである。したがって、 にはインストールされたモジュールを指定する。 ・ 2 行目は、前回も説明したが、 WWW 経由で参照でき るディレクトリ構造を作るための AIias の設定である。 ・ 3 行目以降が、実際のバージョン管理のための設定であ る。 4 行目の、、 DAV svn" は、サプバージョン機能を利 用するという宣言である。そして、 5 行目の SVNPath で指定されたディレクトリがリポジトリの構造をもっこ とを亘言している。 5. リポジトリの言又疋 次に、 svnadmin コマンドを次のように実行してリポジ トリを作成する。 # svnadmin create /usr/local/httpd/repository # chown —R www : www /usr/local/httpd/repository 作成したリポジトリの所有者とグループは、 httpd カ 動する際の UID と GID に言定する。 61

4. UNIX MAGAZINE 2004年4月号

表 1 、 VebDAV 竟での榔艮の見 連載 /UNIX Communication Notes 言霍正方法 ファイルの読出し ファイルの書込み 所有者 (Owner) WWW サーバーへのユーザー名 を指定したログイン。入力するユ ーザー名は、バスワード・ファイル または X. 509 証明書に記されて いる DN を利用 httpd.conf に記述した通常のア クセス制御機構で表現する。一般 的には、 Require ディレクテイプ で以下のように具イ柘勺なユーザー名 を指定する Rem.11re user グループ (Group) WWW サーバーヘログインでき るユーザーのグループとして表現 Require ディレクテイプで複数の ユーザーにアクセスを許可するか、 グループを定義して、 Require valid—user Require group writers のようにグループ単位でアクセス 制御を実施する。上記の例では、 writers という名称のグループを 才彳定している そ窈 ) ューザー (Other) 認証を経ずにアクセスする通常の WWW サーバーの場合と同様で あり、完全な anonymous アクセ スを肴豺是とする httpd.conf でのデフォルトの動 ・作定義によって異なる Limit ディレクテイプをうまく使い、 POST と WebDAV 用に拡張されたプロトコルに対するアクセス制御処 理を言古する。 HTTP のオペレータとしては PUT 、 POST 、 DELETE 、 PROPFIND 、 PROPPATCH 、 MKCOL 、 COPY 、 MOVE 、 LOCK 、 UNLOCK がある。所有者とグルーフ。の表現は、上記の方法をそ のまま利用する サーバー上で扱われるユーザー情報は、そのサーバー内に 閉じているのである。しかも、 WebDAV で使われている ファイルのアクセス制御情報は、 WWW サーバーカ材家動 しているシステムのファイルシステムと直接の関連はない。 したがって、 WWW サーバーへのアクセス制御について の定も別途必要になる。この関係を表 1 にまとめた。 基本的には、 httpd.conf の設疋により WWW サーバ ーへのログイン (UNIX システムへのログインではない ) 時にユーザー認証を実施し、その情報をもとに適切なアク セス制御をおこなう。 ロックはシンプルに解決 最後に残された課題は、ファイルのロックである。 Web- DAV では、シンプルかっ有効な解決方法が用意されてい る。ファイルのロックおよびロック解除は、ファイルを利 用するクライアント側から指示する。そのため、 HTTP 拡 張プロトコルのなかに LOCK と UNLOCK が用意され ている。クライアントは、この 2 つの命令によってサー バーにファイルロックの指示を伝えることができる。 さきほども述べたように、 WebDAV におけるユーザー と OS レベルでのユーザーは 1 対 1 に対応しているわけ ではないから、サーバー側のロック機構を、 FFS などの ファイルシステムの機能だけ実装することはできない。し たがって、アクセス制御と同じく、独自の機構を用意する UNIX MAGAZINE 2004.4 必要がある。具体的には、サーバーではロックの処理と同 時に、そのロックを要求したクライアントに乱数で生成さ れたトークン (token) を返す。ロックを解除するときは、 クライアントからそのトークンの提示を受け、これを照合 したうえで処理をおこなう。ロックは、このような単純な メカニズムで実装されている。 httpd.conf の構造 こまでの説明をまとめると次のようになる。アクセス 制御については、 httpd.conf に以下のように記述する。 7 ℃祠勧 / e の部分には通常のデータの読出しを許可するユー ザーを、 e 市尻 e の部分にはファイルの変更ができるユー く Directory " サーバー上のディレクトリ " > ザーを定義する。 現実的な構成 く /Directory> く /Limit> Require e 市尻 e Aut hType く Limit POST DELETE PROPFIND Require 7 ℃ ad 佖 e AuthType DAV 0 Ⅱ 軽に設疋したいという人も多いだろう。 現実には、いろいろなトラブルの発生を予防しつつ、手 55

5. UNIX MAGAZINE 2004年4月号

連載 1 Zaurus with Linux syslogd のタイムゾーンを強制的に日本標準時にしたい場 合は、環境変数 TZ に、、 Asia/Tokyo" か、、 JST-9" を設疋 します。 上で述べたように、 SL-Zaurus では、カーネルやシステ syslogd を停止させるには、 SL-Zaurus を再起動する ムプロセスカ咄力するメッセージを記録するログ機能が標 か、 kill でシグナルを送ります。 syslogd のプロセス番号 準では無効になっています。しかし、ほかの UNIX マシ は、 /var/run/syslogd. pid に言泉されています。 kill で ンと同様、 syslog を使えばこれらのメッセージの言求が叮 syslogd を停止させ、それを確認するには次のようにすれ 能になります。 syslog を利用すると、各種プロセスからの ばよいでしよう。 メッセージをジャンル別や重要度別にファイルに整理した bash-2.05 # kill ccat /var/run/syslogd ・ pid' り、ほかのマシンに輯去できるようになります [ 2 , 3 ] 。 bash—2.05# tail ー 1 /var/log/messages メッセージを記録するためのプログラムである syslogd Feb 9 21 : 23 : 26 localhost exiting on signal 15 は /sbin ディレクトリに置かれており、その設疋ファイル syslogd を常時動かすには は /etc/syslog. conf です。また、ユーザーがログを記録 こまでに説明した方法では、コマンドラインから sys- するためのインターフェイスとして、 /usr/bin/logger プ logd を起動していましたが、再起動するたびに自動的に ログラムも用意されています。 syslogd を動かすこともできます。 メッセージを記録するには、どのファイルに書き込むの /etc/rc. d 以下のツリーには、ほかの Linux マシンと かを syslog. conf で指定したうえで syslogd を起動しま 同様、再起動時に実行されるスクリプトが置かれています。 す。 SL-Zaurus の場合、標準では syslogd は動いていま SL-Zaurus では、 syslogd を起動するためのスクリプトと せんし、 syslog ・ conf にも記録先の指定がないので、結果 して -S02syslog が用意されています。ただし、このスク としてログはまったく残りません。 リプトはファイル名の先頭の 1 文字が、、 S " ではないので 手動で syslogd を起動 自動的には実行されません。これを S02sysIog という名 上に書いたように、 SL-Zaurus で syslog を有効にす 前に変えれば、再起動するたびに実行されるようになりま るには、 syslog. conf を編集してから syslogd を起動しま す。通常、 SL-Zaurus のランレベルは 5 なので、 /etc/ す。 su で root になってからⅵなどのエデイタを起動し、 rc. d/rc5. d ディレクトリに S02syslog を次のようにシン /etc/syslog. conf の下記の行の先頭にある、、 # " を外しま ボリック・リンクで用意するとよいでしよう。 す ( 誌面の都合上、で折り返しています。以下同様 ) 。 bash—2.05# cd /etc/rc . d/rc5. d bash—2.05 # ln —s -S02sys10g S02sys10g # * . infO ; mail. none ; news. 0 e ; authpriv. none ; : # , ・ /var/log/messages なお、このスクリプトが実行されると ( つまり再起動す . none るたびに ) 、それまでの /var/log/messages ファイルは これで、ログが /var/log/messages というファイルに messages. 0 に、 messages. れは messages. れ十 1 にコピー 最されるようになります ( ローテート ) されます。旧いログファイルは 9 個 (mes- sages. ()—messages. 8) まで残り、それ以前のログファイ bash—2.05# /sbin/syslogd ルは消去されます。 として syslogd を起動すると、 /var/log/messages に S02syslogd の中身を見ると、 /var/log/messages の ーミッションを 600 に設疋するようになっています。 Feb 9 12 : 16 : 58 localhost syslogd 1 . 4.1 : restart . のため、ログは一ヨ殳ユーザー (zaurus) では見られません。 のようなメッセージカ第己録されます。このとき、ログに記 ーヨ殳ユーザーでもログを参照したい場合は、、、 chmod 644 録される時刻は、ログを出力するプロセスが参照するタイ /var/log/messages" として読出し許可を設疋します。 ムゾーン ( 環境変数 (Z) によって、 UTC ( 世界標準時 ) ログを記録しないようにするには、 になる場合と、 JST ( 日本標準時 ) になる場合があります。 sys 厄 g でログをとる 一三ロ 129 UNIX MAGAZ 工 NE 2004.4

6. UNIX MAGAZINE 2004年4月号

連載 /Red Hat Linux のツールたち 図 4 変更後の /etc/lilo. conf prompt timeout=50 default=linux boot=/dev/hda map=/boot/map install=/boot/boot . b message=/boot/message linear [root@valhalla て 00t ] # dmesg 図 5 S CS I 工ミュレーションの石忍 SCSI subsystem driver Revision: 1 . 00 image=/b00t/vm1inuz—2.4.18 ー 3 label=linux initrd=/boot/initrd—2.4.18 ー 3. img append="hdc ide—scsi" root=/dev/hdal read—only SCSiO SCS 工 host adapter emulation for IDE ATAPI devices Vendor : NECVMWar Mode1 : VMware IDE CDRIO Rev : 1 .00 Type : CD—ROM hdc: DMA disabled [root@valhalla て 00t ] # 目 ANSI SCSI revision: 02 次に、プートローダⅢ。の設疋ファイルである /etc/ Ⅲ。 . conf をエデイタで開き、図 4 の下線部の行を追加しま す。これは、、、 hdc というデバイス (CD-ROM ドライプ ) に対して SCSI 工ミュレーション機能を有効にする " とい う意床です。 変更がすんだら、Ⅲ 0 コマンドを引数なしで実行し、設 定の変更をプートローダに反映します。 [root@valhalla root] # 1i10 Added linux * [root@valhalla て 00t ] # ロ あとは、 PC を再起動すれは作業は完了です。再起動後 に dmesg コマンドを実行すると、 IDE 接続の CD-ROM に対して SCSI 工ミュレーションがおこなわれていること が分かります ( 図 5 ) 。 CD-ROM をマウントするときは、 デバイスファイルとして、 /dev/hdc ではなく SCSI 接 続の CD-ROM ドライプに対応する /dev/scd0 カ駛わ れることになります。 cdrecord を使用した書込み mkisofs と同じく、 cdrecord コマンドにもたくさんの オプションがありますが、おもなものを以下に示します ( 詳 しくは、オンライン・マニュアル cdrecord(l) などを参 照してください ) 。 ・ dev:=scsi-id, / れれ CD-R ドライプに割り当てられた SCSI ID と論理ユ UN 工 X MAGAZ 工 NE 2004.4 ニット番号んれをカンマで区切って指定します。複数の CD-R ドライプカ月妾続されている場合は、このオプショ ンで使い分けることができます。なお、 SCSI ID と論 理ユニット番号は、 —scanbus オプション ( 彳 ) で調 べることができます。 ・ speed=num 書込み速度を num で指定します。 ・ blank=type CD-RW メディアの内容を消去する場合に指定します。 type には消去方法を示すキーワードを指定しますが、通 常は、、 fast " でよいでしよう。 ・ driveropts=option-list ドライプ特有のオプション文字列を叩。れ一力に言 します。さまざまなオプションがありますが、三洋電 機が開発したバッフアアンダーラン・エラー防止機能 (BURN-Proof) 付きのドライプの場合は、 SNdriver- opts=burnproof " と指定すれば、この機能を肩効にす ることができます。なお、 BURN-Proof よりもあとに に開発された、同様のエラー防止機能をもつ CD-R ド ライプの場合は、このオプションを指定しなくても自動 的に肩効になるものが多いようです。 —scanbus SCSI バスに接続されているデノヾイスに関する情報を調 べることができます。このオプションを使うときは、ほ かの引数の指定は不要です。 175

7. UNIX MAGAZINE 2004年4月号

連載 1 Zaurus with Linux 1 0 図 4 ルータで VPN カゞ無効になっている場合のログ Feb 9 21 : 05 : 06 localhost rsaipm: Phase—1 [initiator] between fqdn(udp: 500 , [ 0..8 ] =sl-zaurus) and=> ipv4(udp:500, [ 0 .. 3 ] = 172.16.0.254 ) fai1ed(8197) ; Timeout . 図 5 設疋ファイル (VPN. conf) の内容 [Common] Avai1ab1e = y [He1p] [lnfo] ld = VPN1073867856 工Ⅱ fo server InfoLabe1 Server InfoLabe1Cja] = サー / ヾー InterfaceType = vpn Layer = VirtuaI Name = 仮想専用線 ( VPN ) 接続 P1uginRevision = $Revision: Revision = 2 SmartPriority = 90 1 . 19 $ Smart Type Type = vpn [Properties] Aut 0 0 DOMAIN Device = vpn PasswdExportabIe S EARCH = dns 1 dns2 0 passwdexp = 事前共有鍵 password = fh3sich—1m5gqfg3d0559gd8jhx1h-up=> 8080 AuthenticationA1gorythm CVPN Detai1] type 0 noproxycheck = 0 noproxiesback httpport = 8080 httphost ftpport ftphost autoconfig CProxy] username Sl—zaurus usepeerdns = 0 server = 172 . 16 . 0 .254 dIkch—a86jv1gvdz7cI Compress 0 DestinationNetworks Encryption = 0 EncryptionA1gorythm IDType 0 Oak1eyGroup = 1 StaticAddress UsePFS 0 VPNAddress 0 132 1 0 . 0.0 ・ 0 / 0 , 0 図 6 キ寺に使われる spd ファイル ()D と事前共有鍵の部分 ) # Pre—Shared Secret Key ike-key = { local—subject ike—shared—secret fqdn(sl—zaurus) "himitsu" るようです。 VPN 接続時になんらかのファイルをここに書き込んでい UN 工 X MAGAZINE 2004.4 やりとりや、 PPP 接続時にプロバイダから割り当てられた ダイヤルアップ PPP 接続の場合は、データカードとの ロ心、卩 訒識されていないことが分かります。 のようなログカります。このログから、カードが正しく 一方、 SL-Zaurus では利用できないカードの場合は図 8 ワークに接続すると、図 7 のようなログカ第泉されます。 たとえば、無線 LAN カードをスロットに挿してネット なメッセージが /var/log/messages に言泉されます。 フ続におけるデータカードとのやりとりなど、さまざま た各種インターフェイス・カードの情報や、ダイヤルアッ 外の場面でも役に立ちます。 CF カードスロットに接続し が、もちろん、 syslogd カ第冢するメッセージは IPsec 以 こまで、 IPsec VPN 関連のログを紹介してきました 旧 sec 以外でのロクの活用 するとよいかもしれません。 く保存し、そこに書かれている VPN の設疋内容を参考に 対向ルータの設定を考えるときは、このファイルをうま のは接続開始時だけです。 で root 以外には読めません。また、ファイルか存在する かれています。ただし、このファイルも保護モードは 600 このファイルには、図 6 のようにパスワードが平文で書 け作成されることが分かりました。 1073867856. spd というファイルが、接続開始時の一瞬だ の例では VPN1073867856 ) をファイル名とした VPN おこなったところ、設疋ファイル VPN. conf の ID ( 今回 そこで、このディレクトリを監視しながら VPN 接続を

8. UNIX MAGAZINE 2004年4月号

そして、最後に搗瓜を閉じて関数を終了します。 echo 1 > & 2 " ) " exit 1 err 関数、 warn 関数、 info 関数 err 関数は、エラーメッセージを標準ェラー出力に出力 し、可能なら syslog への出力もおこない、指定された値を 使って exit を呼び出します。関数への引数は出力したい メッセージと戻り値ですが、メッセージには複数の単語が 含まれる可能性もあるので、さきに戻り値を指定し、その 後ろに任意個の引数を使ってメッセージを指定するように なっています。 コードでは、まず exit の引数として使う値を exitval 変数に取り出します。これだけではまだ引数のなかに値が 残っているので、 shift を実行して引数からも取り出してし まいます。 exitval=$l shift こうすることで、引数には出力用のメッセージだけカ り、 $ * などを使ってメッセージ全体を出力できるようにな ります。 syslog への出力には logger コマンドを使います。 log- ger は、引数として指定された文字列を syslog に送るコマ ンドです。このとき、ファシリティには user を、レベル には notice を用います。これらを指定したい場合には一 p err() f i logger " $ 0 : ERROR: $ * " if [ —x /usr/bin/logger ] ; then オプションを使います。 UN 工 X MAGAZ 工 NE 2004.4 ラムを終了します。 存しておいた値を引数として exit 関数を呼び出し、プログ 工ラー出力に出力します。最後に、さきほど exitval に保 さらに、 syslog への出力だけでなく、同じ文字列を標準 て logger コマンドを呼び出し、 syslog に出力します。 関数への引数として指定されたすべての文字列を引数とし ません。スクリプト名と ERROR という文字列、そして コードでは、とくにファシリテイやレベルは指定してい プログラミング・テクニック exit $exitval echo 1 > & 2 " $ 0 : ERROR: ことで、 syslog のレベルを有効に活用できるようになり ${syslog-facility}. info" といったオプションを追加する —p ${syslog-facility}. warning ' 、 info 関数なら、、一 p であれば、、一 p ${syslog-facility}. err" 、 warn 関数なら としておき、 logger コマンドを呼び出すときに err 関数 syslog—facility=user defaults/rc. conf など ) で、 たとえば、 rc. subr ファイルの前のほう ( もしくは /etc/ 時にレベルを調整することも考えられます。 これらの関数の定義において、 logger コマンドの呼出し WARNING が INFO となっている点だけが異なります。 その内容は warn 関数とほとんど同じで、メッセージ中の rc. subr ファイルでは、 info 関数も定義されています。 ば、ほば同じ関数であること力分かると思います。 されている点、 exit 関数を呼び出していない点などを除け ない点、メッセージが ERROR から WARNING に変更 err 関数とくらべると、 exitval 変数に値を取り出してい echo 1 > & 2 " $ 0 : WARNING: $ * " f i logger " $ 0 : WARNING: $ * " if [ —x /usr/bin/logger ] ; then warn ( ) 関数は呼び出しません。 ジの出力が目的なので、プログラムを終了するための exit ラー出力にも出力します。ただし、たんなる警告メッセー えられた引数をメッセージとして syslog に出力し、標準工 warn 関数は、 err 関数とほば同様の動作をします。与 ます。 debug 関数 調べ、これカ填の場合にのみ出力をおこないます。 こないます。ただし、 debug 関数は変数 rc-debug の値を セージの syslog への出力や標準工ラー出力への出力をお bug 関数は、 warn 関数や info 関数と同じように、メッ これらの関数とよく似た関数がもう 1 つあります。 de- 99