DOKK / manpages / debian 11 / manpages-ja / hosts_options.5.ja
HOSTS_OPTIONS(5) File Formats Manual HOSTS_OPTIONS(5)

hosts_options - ホストアクセスコントロールの拡張書式

この文書は、hosts_access(5) で説明する文法のオプショナルな拡張に ついて解説するものである。この拡張は、プログラムをコンパイルした 際に利用の可否が決まる。例えば、Makefile を編集し、コンパイル時 に PROCESS_OPTIONS を有効にした場合である。

拡張書式はこのような形式である:

daemon_list : client_list : option : option ...

最初のふたつのフィールドについては、hosts_access(5) のマニュアル で解説されている。ルールの残りの部分は、0 個以上のオプションの列 である。オプションの中では、すべての ":" という文字はバックスラッ シュによって保護される必要がある。

オプションは "keyword" または "keyword value" の形式をとる。オプ ション群は記述された順に解釈される。いくつかのオプションは %<letter> による置き換えを仮定している。初期のバージョンとの互換 性のために、"=" を keyword と value(値) の間におく事も許されてい る。

イベントをログに記録する severity("激しさ") のレベルを変更する。 Facility names (供される利便の項目、たとえば mail) は任意であり、 古い syslog の実装ではサポートされていない。severity オプション は、指示されたイベントを強調するか、あるいは無視するために有意で ある。

サービスの可否。これらのオプションは、ルールの最後に記述しなけれ ばならない。

allowdeny は、すべてのアクセスコントロールのルー ルを、ただひとつのファイル、たとえばhosts.allow に納める事 を可能にしている。

明示されたホストだけにアクセスを許可するには:

ALL: .friendly.domain: ALLOW ALL: ALL: DENY

トラブルメイカーとなる、いくつかのホストを除いて、すべてのホスト からのアクセスを許可するには:

ALL: .bad.domain: DENY ALL: ALL: ALLOW

ドメイン名のパターンの最初にはドットがついている事に注目されたい。

hosts_access(5) のマニュアルで解説される %<letter> の置き換えが 実行されたのちに、子プロセスで、指定のシェルコマンドを実行する。 コマンドは標準入力、標準出力、そして標準エラー出力を null デバイ スに繋げた状態で実行される。したがって、これによってクライアント ホストとの会話が混乱するようなことはない。例えば:

spawn (/some/where/safe_finger -l @%h | /usr/ucb/mail root) &

これは、%h を リモートホストの名前またはアドレスに置き換えたのち に、バックグラウンドの子プロセスで、シェルコマンド "safe_finger -l @%h | mail root" を実行する。

この例では、(リモートの) finger サーバーから送られてくるデータに よって、ダメージがもたらされる可能性を抑えるため、標準の "finger" コマンドに代わって "safe_finger" コマンドを利用している。 この "safe_finger" コマンドは、daemon wrapper package に含まれて いる。これは、標準の finger の露払いとして、リモートホストから送 られるデータをフィルタリングする。

hosts_access(5) のマニュアルで解説される %<letter> の置き換えが 実行されたのちに、現在のプロセスを、要求されたシェルコマンドで置 き換える。標準入力、標準出力そして標準エラー出力は、クライアント のプロセスに接続される。このオプションはルールの最後に記述する必 要がある。

実際の ftp デーモンに代わって、メッセージを変更してクライアント に返すには:

in.ftpd : ... : twist /bin/echo 421 Some bounce message

クライアントプロセスと会話する別の方法として、後述する banners オプションを参照されたい。

/some/other/in.telnetd を、コマンドラインの引数やプロセスの環境 変数によって汚染されることなく実行するには:

in.telnetd : ... : twist PATH=/some/other; exec in.telnetd

警告: UDP サービスにおいては、standard I/O の利用、またはクライ アントプロセスとの交信のための read(2)/write(2) ルーチンと、 command を混同しないように; UCP は、また別の基本的な I/O を必要 とする。

定期的にサーバーはクライアントにメッセージを送るようになる。もし、 クライアントからの応答がない場合、接続は切断されたものと見なされ る。この keepalive オプションは、ユーザーがサーバーに継っている 間に、マシンの電源を切った時に有用である。keepalive オプションは datagram (UDP) services には役に立たない。
サーバーのプロセスが接続を切断したのち、カーネルが未配送データの 再送を試みる時間を指示する。

RFC 931 (TAP, IDENT, RFC 1413) にしたがう形で、クライアントユー ザー名を問い合わせる。サービスが TCP 以外の転送方法に基づいてい る場合は、このオプションは黙って無視される。この方法はクライアン トのシステムが RFC 931 と互換性のあるデーモン (IDENT など) を走 らせていることが条件で、non-UNIX のクライアントからの接続に対し ては、著しく遅くなるだろう。timeout までの秒数は任意である。 timeout が指示されない場合、コンパイル時に決められた初期値が使わ れる。

`/some/directory' の中で、デーモンプロセスの名前と一致するファイ ル (たとえば、telnet サービスなら in.tenletd)を探し、その内容を クライアントに対してコピーする。改行文字は、CR(carriage-return) 改行文字に置き換えられ、%<letter> は展開される (hosts_access(5) のマニュアルを参照)。

tcp wrapper の配布ソースには、手際よく banner を保守するための、 サンプルの makefile (Banners.Makefile) が含まれている。

警告: banners は connection-oriented (TCP) network (コネクション に指向の高いサービス)でのみ利用する事ができる。

プロセスの nice 値を変更する(初期値は 10)。他のプロセスに、より 多くの CPU 資源を割り当てるには、正の値を指示する。
(name, value) のペアをプロセスの環境変数に設定する。value は %<letter> への展開があるものと仮定され、ホワイトスペースの利用は 自制する必要があるだろう(ただし、前後の空白は切り捨てられる)。

警告: 多くのネットワークデーモンは login または shell プロセスを 再起動する前に、その環境変数をリセットする。

シェルのビルトインコマンド umask と似た機能。022 の umask は、 group と world による書き込み禁止措置によって、ファイルの作成を 予防する。umask の引数は 8 進数でなければならない。
ユーザー "nobody" (またはユーザー "nobody", グループ "kmem")は、 特別な扱いとみなす。最初の形式は、root 権限で全てのサービスを実 行するような inetdの実装で有用である。二番目の形式は、グループの 権限のみが必要なサービスのために有用である。

アクセスコントロールルールに文法エラーが発見された場合、エラーは syslog デーモンへ報告される。余計なオプションは無視され、サービ スは拒否される。

hosts_access(5), 基本的なアクセスコントロール書式

Wietse Venema (wietse@wzv.win.tue.nl)
Department of Mathematics and Computing Science
Eindhoven University of Technology
Den Dolech 2, P.O. Box 513, 
5600 MB Eindhoven, The Netherlands

翻訳者

FUKUSHIMA Osamu/福島於修 <fuku@amorph.rim.or.jp>