模式
访问控制语言实现以下模式:
- 以“。”开头的字符串。字符。如果主机名的最后一部分与指定的模式匹配,则匹配该主机名。例如,模式“ .tue.nl”与主机名“ wzv.win.tue.nl”匹配。
- 以“。”结尾的字符串。字符。如果主机地址的第一个数字字段与给定的字符串匹配,则匹配该主机地址。例如,模式“ 131.155”。与(几乎)埃因霍温大学网络(131.155.xx)上每个主机的地址匹配。
- 以'@'字符开头的字符串被视为NIS(以前称为YP)网络组名称。如果主机名是指定网络组的主机成员,则匹配该主机名。守护进程名称或客户端用户名称不支持Netgroup匹配。
- “ nnnn / mmmm”形式的表达式被解释为“ net/mask”对。如果“ net”等于地址和“掩码”的按位与,则匹配IPv4主机地址。例如,网络/掩码模式“ 131.155.72.0/255.255.254.0”与“ 131.155.72.0”至“ 131.155.73.255”范围内的每个地址匹配。
- “ [n:n:n:n:n:n:n:n] / m”形式的表达式被解释为“ [net]/prefixlen”对。如果“ net”的“ prefixlen”位等于该地址的“ prefixlen”位,则匹配IPv6主机地址。例如,[net] /前缀模式“ [3ffe:505:2:1 ::]/64”会匹配“ 3ffe:505:2:1:”范围内的每个地址?到'3ffe:505:2:1:ffff:ffff:ffff:ffff'。
- 以'/'字符开头的字符串被视为文件名。如果主机名或地址与命名文件中列出的任何主机名或地址模式匹配,则匹配该主机名或地址。文件格式为零或更多行,零或多个主机名或地址模式用空格分隔。文件名模式可以在任何可以使用主机名或地址模式的地方使用。
- 通配符“ *”和“?”可以用来匹配主机名或IP地址。这种匹配方法不能与“ net/mask”匹配,以“。”开头的主机名匹配一起使用。或以“。”结尾的IP地址匹配。
通配符
访问控制语言支持显式通配符:
所有 |
通用通配符始终匹配。 |
本地 |
匹配名称不包含点字符的任何主机。 |
未知 |
匹配名称未知的任何用户,并匹配名称或地址未知的任何主机。请谨慎使用此模式:由于临时名称服务器问题,主机名可能不可用。当软件无法确定正在与之通信的网络类型时,网络地址将不可用。 |
知道的 |
匹配名称已知的任何用户,以及名称和地址已知的任何主机。请谨慎使用此模式:由于临时名称服务器问题,主机名可能不可用。当软件无法确定正在与之通信的网络类型时,网络地址将不可用。 |
泛醇 |
匹配名称不匹配其地址的任何主机。使用-DPARANOID(默认模式)构建tcpd时,即使在查看访问控制表之前,它也会丢弃来自此类客户端的请求。当您想要对此类请求进行更多控制时,不使用-DPARANOID进行构建。 |
经营者
EXCEPT预期用途的格式为:“ list_1 EXCEPT list_2”;除非与list_2匹配,否则此构造匹配与list_1匹配的任何内容。可以在daemon_lists和client_lists中使用EXCEPT运算符。 EXCEPT运算符可以嵌套:如果控制语言允许使用括号,则'a EXCEPT b EXCEPT c'将解析为'(a EXCEPT(b EXCEPT c))'。 Shell命令
如果第一个匹配的访问控制规则包含shell命令,则该命令将受% 替换(请参阅下一节)。结果由/bin/sh子进程执行,其标准输入,输出和错误连接到/dev/null。如果您不想等到命令结束,请在命令末尾指定“&”。 Shell命令不应依赖inetd的PATH设置。相反,它们应使用绝对路径名,或者应以显式PATH = whatever语句开头。
% 扩展
Shell命令中提供以下扩展:
%a(%A) |
客户端(服务器)主机地址。 |
%c |
客户信息:user@host,user@address,主机名或仅是地址,具体取决于可用的信息量。 |
%d |
守护进程名称(argv[0]值)。 |
%h(%H) |
客户端(服务器)的主机名或地址(如果主机名不可用)。 |
%n(%N) |
客户端(服务器)主机名(或“未知”或“偏执狂”)。 |
%p |
守护进程ID。 |
%s |
服务器信息:daemon@host,daemon@address或仅是守护程序名称,具体取决于可用的信息量。 |
%u |
客户端用户名(或“未知”)。 |
%% |
扩展为单个'%?字符。 |
下划线会替换%扩展名中可能会引起外壳混乱的字符。