名前
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_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 (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