[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3. 設定ファイル

ebnetd, ndtpd, ebhttpd を始動させるためには、まず 設定ファイルを編集する必要があります。 サーバは、始動時および再始動時にこのファイルを読み込みます。 このファイルの内容によって、サーバの様々な挙動が決定されます。 EBNETD を `/usr/local' 以下にインストールし、かつ、マシン固有の 読み込み専用のデータを置くディレクトリ (sysconfdir) の位置を 変更していなければ、無指定時に読み込まれる設定ファイルは `/usr/local/etc/ebnetd.conf' になります。 設定ファイルの位置は、コマンドラインオプション `--configuration-file' (あるいは `-c') を用いることで変更が可能です (「ebnetd のオプション」節を参照)。

設定ファイルの中では、空行、および空白以外の最初の文字がハッシュ記号 (`#') である行は無視されます。 他の行はすべて、単独指示子 (single directive)複合指示子 (group directive) のいずれかでなくてはなりません。 単独指示子と複合指示子は、どのような順序で定義しても差し支えありません。

各行は、改行文字を含め 511 文字を越えてはなりません。

3.1 単独指示子の一般形  
3.2 単独指示子の一覧  
3.3 複合指示子の一般形  
3.4 book 複合指示子  複合指示子の一覧
3.5 設定ファイルの例  


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.1 単独指示子の一般形

単独指示子とは、1 行で完結する指示子です。 単独指示子の一般形は次の通りです。

 
指示子の名前    指示子の値

以下の例では、syslog-facility が指示子の名前、`local0' が その値です。

 
syslog-facility    local0

指示子名の大文字と小文字は区別されますので、`syslog-facility'`Syslog-Facility' と書くことはできません。 指示子の名前と値の区切りには、空白かタブを用います。 連続した空白とタブが、行頭および行末にあった場合、それらは無視されます。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.2 単独指示子の一覧

単独指示子には次のようなものがあります。

ebnet-port
ebnet-port 指示子では、ebnetd が見張るポートの番号を指定 します。 指示子の値は、TCP のサービス名 (例: `EBNET') か、ポート番号 (例: `22010') でなくてはいけません。 ebnetdinetd 経由で起動した場合は、この指示子は 無視されます。 この指示子は必ずしも定義する必要はありません。 また、2 度以上定義することはできません。 無指定時の値は `EBNET' です。

ndtpd, ebhttpd はこの指示子を常に無視します。

ndtp-port
ndtp-port 指示子では、ndtpd が見張るポートの番号を指定 します。 指示子の値は、TCP のサービス名 (例: `NDTP') か、ポート番号 (例: `2010') でなくてはいけません。 ebnetdinetd 経由で起動した場合は、この指示子は 無視されます。 この指示子は必ずしも定義する必要はありません。 また、2 度以上定義することはできません。 無指定時の値は `NDTP' です。

ebnetd, ebhttpd はこの指示子を常に無視します。

http-port
http-port 指示子では、ebhttpd が見張るポートの番号を 指定します。 指示子の値は、TCP のサービス名 (例: `HTTP') か、ポート番号 (例: `80') でなくてはいけません。 ebhttpdinetd 経由で起動した場合は、この指示子は 無視されます。 この指示子は必ずしも定義する必要はありません。 また、2 度以上定義することはできません。 無指定時の値は `HTTP' です。

ebnetd, ebhttpd はこの指示子を常に無視します。

user
user 指示子では、サーバプロセスの実効ユーザを指定します。 指示子の値は、ユーザ名 (例: `nobody') か、ユーザ ID (例: `65535') でなくてはいけません。 別のユーザに実効ユーザを変える場合は、スーパユーザ特権を有した状態で サーバを起動しなくてはなりません。 実効ユーザの変更に失敗すると、サーバは走行の継続を断念します。 この指示子は必ずしも定義する必要はありません。 また、2 度以上定義することはできません。 この指示子を定義しなかった場合、サーバプロセスの実効ユーザは変化 しません。

`ndtpuser' のようなダミーのユーザアカウントを一つ作って、それを この指示子で指定することをお薦めします。

group
group 指示子では、サーバプロセスの実効グループを指定します。 指示子の値は、ユーザ名 (例: `nogroup') か、グループ ID (例: `65534') でなくてはいけません。 実効グループの変更に失敗すると、サーバは走行の継続を断念します。 この指示子は必ずしも定義する必要はありません。 また、2 度以上定義することもできません。 この指示子を定義しなかった場合、サーバプロセスの実効グループは変化 しません。

`ndtpgrp' のようなダミーのグループアカウントを一つ作って、それを この指示子で指定することをお薦めします。

max-clients
max-clients 指示子では、同時にサーバに接続できるクライアントの 数の上限を指定します。 指示子の値は、0 以上の整数でなくてはいけません。 この指示子は必ずしも定義する必要はありません。 また、2 度以上定義することはできません。 無指定時の値は `1' です。 指示子の値を 0 に設定すると、無制限になります。

hosts
hosts 指示子では、どのホストがサーバに接続でき、どのホストが 接続できないのかを指定します。 指示子の値は IP アドレス、ホスト名、アドレス/ネットマスク の いずれかです。 加えて、直前に感嘆符 (`!') を付けることができます。 指示子の値が感嘆符で始まっていた場合は、それに続く IP アドレスまたは ホスト名にマッチするホストからの接続要求は拒否します。 感嘆符がない場合は、指示子の値にマッチするホストからの接続要求は許可 します。

 
# `host.xxx.yyy.jp' からの接続を許可する。
hosts host.xxx.yyy.jp

# `127.0.0.1' からの接続を許可する。
hosts 127.0.0.1

# `192.24.1.0/24'.からの接続を拒否する。
hosts !192.24.1.0/24

ホスト名に限り、アスタリスク (`*') と疑問符 (`?') を使う ことができます。 アスタリスクは、先頭の感嘆符を除いた任意の 0 文字以上の文字列にマッチ します。

 
# `xxx.yyy.jp' ドメインのホストからの接続を拒否する。
hosts !*.xxx.yyy.jp

# どのホストからの接続も許可する。
hosts *

疑問符は 未知のホスト名 を表します。

 
# ホスト名が分からないホストからの接続を拒否する。
hosts !?

この指示子は必ずしも定義する必要はありません。 また、何度でも定義することが可能です。 設定ファイルに hosts 指示子が無くてもエラーにはなりませんが、 どのクライアントもサーバにはアクセスできなくなります。 いずれの hosts 指示子にもマッチしないホストからの接続要求は拒否 されます。 複数の hosts にマッチする場合は、設定ファイルの先頭に最も近い ものが採用されます。

以下の例では、`sub1.xxx.yyy.jp' ドメインに属するホストからの 接続要求は拒否していますが、それ以外の `xxx.yyy.jp' ドメインに 属するホストからの接続要求は許可しています。

 
hosts !*.sub1.xxx.yyy.jp
hosts *.xxx.yyy.jp

この例では、指示子の順序は重要です。 順序を引っくり返してしまうと、`sub1.xxx.yyy.jp' を含め、 `xxx.yyy.jp' ドメインに属するすべてのホストがサーバに接続できて しまいます。

 
# 間違い!!!
hosts *.xxx.yyy.jp
hosts !*.sub1.xxx.yyy.jp

ホスト名を比較する際、サーバは常にクライアントの正式ホスト名を使用 します。 ホスト名は、クライアントのアドレスから DNS などの名前解決のサービス を利用して取得します。 別名は使用されませんので、注意して下さい。

IPv6 アドレスおよび IPv6 アドレス/ネットマスク パターンを指定 することも可能です。 IPv6 対応機能を有効にしてコンパイルされていないサーバは IPv4 クライアントとしか通信できませんが、設定ファイルに書かれた IPv6 アドレスを解釈することはできます。

 
# `12ab:0:0:cd3::/60' と `::1' からの接続を許可する。
hosts ::1
hosts 12ab:0:0:cd3::/60

hosts 指示子では、IPv4 アドレス (例 `192.168.1.1') とそれ に対応する IPv4 射影 IPv6 アドレス (例 `::ffff:192.168.1.1') は 等価になります。 つまり、IPv4 クライアント `192.168.1.1'hosts 指示子 `::ffff:192.168.1.1' にマッチし、IPv6 クライアント `::ffff:192.168.1.1'hosts 指示子 `192.168.1.1' にマッチします。

timeout
timeout 指示子では、交信が途絶えたクライアントとの接続を サーバが切断するまでの秒数を指定します。 指示子の値は、0 以上の整数でなくてはいけません。 この指示子は必ずしも定義する必要はありません。 また、2 度以上定義することはできません。 無指定時の値は `900' (15分) です。 指示子の値を 0 に設定すると、時間切れによる切断は行いません。

work-path
work-path 指示子では、サーバの作業用ディレクトリ のパスを指定します (「作業用ディレクトリ」節を参照)。 指示子の値は、絶対パスでなくてはいけません。 サーバはこのディレクトリの下に作業用のファイルをいくつか作成します。 また、異常終了によってコアファイルをダンプするときは、このディレクトリ に作成します。 この指示子は必ずしも定義する必要はありません。 また、2 度以上定義することはできません。 EBNETD を `/usr/local' 以下にインストールし、かつ、マシン固有の 更新されうるデータを置くディレクトリ (localstatedir) を変更して いなければ、無指定時の値は `/usr/local/var/ebnetd/' になります。

max-hits
max-hits 指示子では、一回の検索でサーバが返すヒット数の上限を 指定します。 サーバは、この指示子で指定された値と同じだけのヒット数を見つけた時点 で、ただちに検索を中止します。 この指示子は必ずしも定義する必要はありません。 また、2 度以上定義することはできません。 無指定時の値は `50' です。 指示子の値を 0 に設定すると、無制限になります。

ebnetd はこの指示子を常に無視します。

max-text-size
max-text-size 指示子は、サーバがクライアントへの応答 1 回で 返すテキストのバイト数の上限を指定します。 この指示子は必ずしも定義する必要はありません。 また、2 度以上定義することはできません。 無指定時の値は `32768' です。 指示子の値を 0 に設定すると、無制限になります。

ebnetd はこの指示子を常に無視します。

syslog-facility
syslog-facility 指示子では、syslog のファシリティを指定します (例: `daemon', `local0' など)。 この指示子は必ずしも定義する必要はありません。 また、2 度以上定義することはできません。 無指定時は `daemon' を用います。 また、サーバが設定ファイルを読み込み終わるまでは、`daemon' が 用いられます。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.3 複合指示子の一般形

複合指示子 (指示命令) とは、記述が設定ファイル内の複数行に渡る指示子です。 複合指示子の一般形は次の通りです。

 
begin 複合指示子の名前
    副指示子の名前    副指示子の値
             : 
             : (繰り返し)
             : 
end

キーワード begin は、複合指示子の開始を表します。 begin は後ろに 複合指示子の名前 を引数として取ります。 begin複合指示子の名前 は空白かタブで区切り、両方とも 同じ行の中に置きます。 キーワード end は、複合指示子の終了を表します。 end は、単独で 1 行にして置きます。

EBNETD バージョン 1.0 では、使用できる複合指示子の名前は book だけです。 それぞれの 副指示子 は、beginend の行の間に 置きます。 副指示子に関する記述の一般的な規則は、単独指示子と変わりません (たとえば、副指示子の名前副指示子の値 は空白かタブで 区切ることなど)。

以下は、 book 複合指示子の記述例です。

 
begin book
        name            EJDICT
        title           English Japanese Dictionary
        path            /mnt/cdrom
        hosts           127.0.0.1 
        hosts           host.your.domain       
end


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.4 book 複合指示子

一つの book 複合指示子 は一冊の CD-ROM 書籍に対応しますので、 CD-ROM 書籍一冊ごとにこの複合指示子を定義しなくてはいけません。 book 複合指示子の副指示子として、EBNETD が認識するものは次の通り です。

name
name 副指示子では、その書籍の名前を指定します。 副指示子の値に用いることができるのは、英小文字 (`a'..`z')、 数字 (`0'..`9')、下線 (`_')、ハイフン (`-') だけで、 長さは 14 文字までです。 この名前は、書籍を識別するために使いますので、各書籍には異なる名前を 付けなくてはいけません。 この副指示子は、それぞれの book 複合指示子に必須です。 また、1 つの book 複合指示子で 2 度以上定義することはできません。

title
title 副指示子では、その書籍の題名を指定します。 副指示子の値には、改行文字とナル文字 (`\0') を除く任意の文字を 使って指定することができますが、長さは 80 バイトまでです。 EUC (Extended Unix Code) を用いれば日本語の文字も使用可能です。 副指示子の値の中に空白やタブを用いることも可能で、これらは他の文字と 同じく一文字として解釈されます。

この副指示子は、それぞれの book 複合指示子に必須です。 また、1 つの book 複合指示子で 2 度以上定義することはできません。

path
path 副指示子では、その書籍の絶対パスを指定します。 パスはその書籍のトップディレクトリ、つまり `catalog' または `catalogs' ファイルの存在するディレクトリを指してしなくては いけません。

この副指示子は、それぞれの book 複合指示子に必須です。 また、1 つの book 複合指示子で 2 度以上定義することはできません。

appendix-path
appendix-path 副指示子では、その書籍に対応する appendix (付録) パッケージの絶対パスを指定します。 パスは appendix パッケージのトップディレクトリ、つまり `catalog' または `catalogs' ファイルの存在するディレクトリを指してしなくては いけません。

この副指示子は、必ずしも定義する必要はありません。 また、1 つの book 複合指示子で 2 度以上定義することはできません。 書籍を使う上で、appendix パッケージは必須ではありませんが、ないと外字が 識別不可能になるため、読みづらいかも知れません。

max-clients
max-clients 副指示子には、この書籍を同時にいくつのクライアントが 使うことができるのかを指定します。 副指示子の値には、0 以上の整数を指定します。 この副指示子は、必ずしも定義する必要はありません。 また、1 つの book 複合指示子で 2 度以上定義することはできません。 無指定時の値は `1' です。 0 を指定すると、無制限になります。

work-path (「5.3 作業用ディレクトリ」節を参照) に共通の値をセットしておくと、 クライアントの数が ebnetd, ndtpd, ebhttpd 間で 共有されます。 たとえば、ある瞬間にある書籍をアクセスしている ebnetd クライアント が 2 つ、ndtpd クライアントが 3 つあったとすると、サーバは 5 つのクライアントが書籍にアクセスしているものと判断します。

hosts
hosts 副指示子には、この書籍にどのホストがアクセスできて、どの ホストができないのかを指定します。 この副指示子は、必ずしも定義する必要はありません。 また、1 つの book 複合指示子で何度でも定義することが可能です。 book 複合指示子が hosts 副指示子を持たなくてもエラーには なりませんが、その書籍はどのクライアントからもアクセスできません。

この副指示子の表記方法は、単独指示子の hosts と同じです。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.5 設定ファイルの例

EBNETD を `/usr/local' 以下にインストールし、かつ、マシン固有の 読み込み専用のデータを置くディレクトリ (sysconfdir) の位置を変更 していなければ、この設定ファイルのサンプルは `/usr/local/etc/ebnetd.conf.sample' にインストールされています。

 
######################################################################
# ebnetd/ndtpd/ebhttpd の設定ファイルのサンプル
# (このファイルを `ebnetd.conf' にコピーして、編集して下さい)
######################################################################

### `ebnetd' が見張るポート番号
### (無指定の場合: ebnet)
# ebnet-port	ebnet

### `ndtpd' が見張るポート番号
### (無指定の場合: ndtp)
# ndtp-port	ndtp

### `ebhttpd' が見張るポート番号
### (無指定の場合: http)
# http-port	http

### サーバのプロセスの所有ユーザ
### (無指定の場合: なし)
user		ndtpuser

### サーバのプロセスのグループ
### (無指定の場合: なし)
group		ndtpgrp

### サーバに同時に接続できるクライアントの数
### (無指定の場合: 1)
# max-clients	1

### サーバに接続できるホスト、できないホスト
### (無指定の場合: なし)
hosts		127.0.0.1
hosts		::1
hosts		!?
hosts		host.your.domain

### サーバが交信の途絶えたコネクションを切るまでの時間
### (無指定の場合: 900)
# timeout		900

### 作業用ディレクトリのパス
### サーバを起動する前に、このディレクトリを作り、サーバプロセスが
### 書き込めるようにしておいて下さい。
### (無指定の場合: /usr/local/var/ebnetd)
# work-path	/usr/local/var/ebnetd

### 一回の検索で、サーバが返す、ヒットしたエントリの最大個数
### (無指定の場合: 50)
# max-hits	50

### クライアントへの一回の応答で、サーバが返すテキストの最大サイズ
### (default: 32768)
# max-text-size		32768

### syslog のファシリティ
### (無指定の場合: daemon)
syslog-facility	local0

###
### 書籍のエントリ
###
begin book
    ### 書籍名
    ### (必須)
    name		JITENBAN97

    ### 書籍の題名
    ### (必須)
    title		Jitenban 97

    ### 書籍のトップディレクトリ
    ### (必須)
    path		/cdrom

    ### appendix (付録) パッケージのトップディレクトリ
    ### (無指定の場合: なし)
    appendix-path	/usr/local/share/eb/appendix/jitenban97-2.1

    ### 同時にアクセスできるクライアントの数
    ### (無指定の場合: 1)
    max-clients		1

    ### この書籍を利用できるホスト、できないホスト
    ### (無指定の場合: なし)
    hosts		127.0.0.1
    hosts		::1
    hosts		!?
    hosts		host.your.domain
end

### もし、CD-ROM 書籍が他にもあるなら、`book' 複合指示子 (`begin book'
### から `end' の間の行) を追加して下さい。`book' 複合指示子は、
### 書籍一冊毎に必要です。


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Motoyuki Kasahara on December, 28 2003 using texi2html