### 模式

访问控制语言实现以下模式：

- 以“。”开头的字符串。字符。如果主机名的最后一部分与指定的模式匹配，则匹配该主机名。例如，模式“ .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 | 客户端用户名（或“未知”）。
%% | 扩展为单个'%？字符。

下划线会替换%扩展名中可能会引起外壳混乱的字符。