hosts_access, hosts_ctl, request_init, request_set -
アクセスコントロールライブラリ
#include "tcpd.h"
extern int allow_severity;
extern int deny_severity;
struct request_info *request_init(request, key, value, ..., 0)
struct request_info *request;
struct request_info *request_set(request, key, value, ..., 0)
struct request_info *request;
int hosts_access(request)
struct request_info *request;
int hosts_ctl(daemon, client_name, client_addr, client_user)
char *daemon;
char *client_name;
char *client_addr;
char *client_user;
このドキュメントで説明されるルーチンは
libwrap.a ライブラ
リの一部である。このライブラリは、特定のルールに従うアクセスコン
トロール書式を提供する。このアクセスコントロールには、ルールに合
致した場合、シェルコマンドが実行できるというオプション機能も含ま
れている。
request_init()
は、クライアントのリクエストについての情報のスト
ラクチャを初期化する。request_set()
は、すでに初期化されているリ
クエストのストラクチャを更新するためにつかう。どちらの関数も
key-value という 変数-値(variable-length)
のペアによるリストを得
て、最初の引き数(first
argument)を返す。引き数のリストはゼロの値
を持つ key
で終る。すべての文字列の値を持つ引き数(argument)はコピーされる。
有効な key
(そして対応する値のタイプ)
は以下のとおり:
- RQ_FILE (int)
- リクエストと関連付けされるファイルディスクリプタ
- RQ_CLIENT_NAME (char *)
- クライアントホスト名
- RQ_CLIENT_ADDR (char *)
- クライアントのネットワークアドレスの名称(a
printable representation)
- RQ_CLIENT_SIN (struct sockaddr_in *)
- クライアントのネットワークアドレス内部での名称(an
internal printable
representation)とポート番号。ストラクチャの中身はコピー
されない。
- RQ_SERVER_NAME (char *)
- エンドポイントにあるサーバのホスト名
- RQ_SERVER_ADDR (char *)
- エンドポイントにあるサーバアドレスの名称(a
printable representation)
- RQ_SERVER_SIN (struct sockaddr_in *)
- エンドポイントにあるサーバのネットワークアドレス内部での名称(an
internal printable
representation)とポート番号。ストラクチャの中
身はコピーされない。
- RQ_DAEMON (char *)
- サーバホストで動作するデーモンの名前
- RQ_USER (char *)
- リクエストを発行したユーザのクライアントホストにおける名称
hosts_access() は
hosts_access(5)
のマニュアルページで
解説されている、アクセスコントロールテーブルを参照する。
内部のエンドポイント情報が有効であった場合、
要求に応じてホスト名とクライアントユーザ名の探査が行われ、
リクエスト・ストラクチャをキャッシュする。
もしアクセスが拒否された場合、hosts_access()
はゼロを返す。
hosts_ctl() は request_init() と hosts_access()
をさらに使いやす
いインターフェースによって包むラッパーである
(自動的にクライアン
トのユーザ名を探査するには、充分な機能とはいえないけれども)。
クライアントホストアドレス、クライアントホスト名、そしてユーザ名
に対する引き数は、有効なデータまたは
STRING_UNKNOWN を利用するこ
と。もしアクセスが拒否された場合、hosts_ctl()
はゼロを返す。
変数
allow_severity と
deny_severity
は受諾または拒
否するリクエストをどのように記録するかを指示するものである。
これらは呼び出す側によって規定されるべきものであり、アクセスコン
トロールテーブルに示されるルールによっては変更される可能性がある。
問題があれば syslog
デーモンを通じて報告される。
hosts_access(5),
ホストアクセスコントロールファイルの書式
hosts_options(5),
ホストアクセスコントロールの拡張書式
/etc/hosts.allow, /etc/hosts.deny,
アクセスコントロールテーブル
hosts_access() は strtok()
ライブラリ関数を使っている。
これにより、strtok()
をあてにしている他のコードと干渉が
おきるかもしれない。
Wietse Venema ([email protected])
Department of Mathematics and Computing Science
Eindhoven University of Technology
Den Dolech 2, P.O. Box 513,
5600 MB Eindhoven, The Netherlands