名 前
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
(wietse [AT] wzv.nl)
Department of Mathematics and Computing Science
Eindhoven University of Technology
Den Dolech 2, P.O. Box 513,
5600 MB Eindhoven, The Netherlands