EN JA
HOSTS_ACCESS(3)
HOSTS_ACCESS(3) FreeBSD Library Functions Manual HOSTS_ACCESS(3)

名前

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_severitydeny_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