### Mustern

Die Zugriffskontrollsprache implementiert die folgenden Muster:

- Ein String, der mit einem '.'-Zeichen beginnt. Ein Hostname wird gematcht, wenn die letzten Komponenten seines Namens dem angegebenen Muster entsprechen. Zum Beispiel, das Muster '.tue.nl' entspricht dem Hostnamen 'wzv.win.tue.nl'.
- Ein String, der mit einem '.'-Zeichen endet. Eine Hostadresse wird gematcht, wenn die ersten numerischen Felder der Adresse dem angegebenen String entsprechen. Zum Beispiel, das Muster '131.155.' entspricht der Adresse fast jedes Hosts im Netzwerk der Eindhoven Universität (131.155.x.x).
- Ein String, der mit einem '@'-Zeichen beginnt, wird als NIS (früher YP) Netgroup-Name behandelt. Ein Hostname wird gematcht, wenn er Mitglied der angegebenen Netgroup ist. Netgroup-Matches werden nicht für Daemon-Prozessnamen oder Client-Benutzernamen unterstützt.
- Ein Ausdruck der Form 'n.n.n.n/m.m.m.m' wird als 'net/mask'-Paar interpretiert. Eine IPv4-Hostadresse wird gematcht, wenn 'net' dem bitweisen UND der Adresse und der 'mask' entspricht. Zum Beispiel, das net/mask Muster '131.155.72.0/255.255.254.0' entspricht jeder Adresse im Bereich '131.155.72.0' bis '131.155.73.255'.
- Ein Ausdruck der Form '[n:n:n:n:n:n:n:n]/m' wird als '[net]/prefixlen'-Paar interpretiert. Eine IPv6-Hostadresse wird gematcht, wenn die ersten 'prefixlen'-Bits von 'net' mit den ersten 'prefixlen'-Bits der Adresse übereinstimmen. Zum Beispiel, das [net]/prefixlen Muster '[3ffe:505:2:1::]/64' entspricht jeder Adresse im Bereich '3ffe:505:2:1:'? bis '3ffe:505:2:1:ffff:ffff:ffff:ffff'.
- Ein String, der mit einem '/'-Zeichen beginnt, wird als Dateiname behandelt. Ein Hostname oder eine Adresse wird gematcht, wenn es mit einem der in der benannten Datei aufgeführten Muster übereinstimmt. Das Dateiformat besteht aus null oder mehr Zeilen mit null oder mehr Hostnamen- oder Adressmustern, die durch Leerzeichen getrennt sind. Ein Dateiname-Muster kann überall dort verwendet werden, wo ein Hostname- oder Adressmuster verwendet werden kann.
- Wildcard-Zeichen '*' und '?' können verwendet werden, um Hostnamen oder IP-Adressen zu matchen. Diese Methode der Übereinstimmung kann nicht in Verbindung mit 'net/mask'-Übereinstimmungen, Hostnamen, die mit '.' beginnen, oder IP-Adressen, die mit '.' enden, verwendet werden.

### Wildcard-Zeichen

Die Zugriffskontrollsprache unterstützt explizite Wildcards:

ALL | Das universelle Wildcard, entspricht immer.
LOCAL | Entspricht jedem Host, dessen Name keinen Punkt enthält.
UNKNOWN | Entspricht jedem Benutzer, dessen Name unbekannt ist, und entspricht jedem Host, dessen Name oder Adresse unbekannt ist. Dieses Muster sollte mit Vorsicht verwendet werden: Hostnamen können aufgrund vorübergehender Probleme mit dem Namensserver nicht verfügbar sein. Eine Netzwerkadresse ist nicht verfügbar, wenn die Software nicht feststellen kann, mit welchem Typ von Netzwerk sie kommuniziert.
KNOWN | Entspricht jedem Benutzer, dessen Name bekannt ist, und entspricht jedem Host, dessen Name und Adresse bekannt sind. Dieses Muster sollte mit Vorsicht verwendet werden: Hostnamen können aufgrund vorübergehender Probleme mit dem Namensserver nicht verfügbar sein. Eine Netzwerkadresse ist nicht verfügbar, wenn die Software nicht feststellen kann, mit welchem Typ von Netzwerk sie kommuniziert.
PARANOID | Entspricht jedem Host, dessen Name nicht mit seiner Adresse übereinstimmt. Wenn tcpd mit -DPARANOID (Standardmodus) gebaut wird, werden Anfragen von solchen Clients bereits vor der Überprüfung der Zugriffskontrolltabellen abgelehnt. Bauen Sie ohne -DPARANOID, wenn Sie mehr Kontrolle über solche Anfragen haben möchten.

### Operatoren

EXCEPT Der beabsichtigte Gebrauch ist in der Form: 'list_1 EXCEPT list_2'; diese Konstruktion entspricht allem, was mit list_1 übereinstimmt, es sei denn, es stimmt mit list_2 überein. Der EXCEPT-Operator kann in daemon_lists und client_lists verwendet werden. Der EXCEPT-Operator kann geschachtelt werden: Wenn die Zugriffskontrollsprache die Verwendung von Klammern zulassen würde, würde 'a EXCEPT b EXCEPT c' als '(a EXCEPT (b EXCEPT c))' geparst werden.

### Shell-Befehle

Wenn die zuerst gefundene Zugriffskontrollregel einen Shell-Befehl enthält, wird dieser Befehl den % Ersetzungen (siehe nächste Sektion) unterzogen. Das Ergebnis wird von einem /bin/sh-Kindprozess ausgeführt, wobei die Standard-Eingabe, -Ausgabe und -Fehler mit /dev/null verbunden sind. Geben Sie ein '&' am Ende des Befehls an, wenn Sie nicht warten möchten, bis er abgeschlossen ist.

Shell-Befehle sollten nicht auf die PATH-Einstellung von inetd angewiesen sein. Stattdessen sollten sie absolute Pfadnamen verwenden oder mit einer expliziten PATH=whatever-Anweisung beginnen.

### % Erweiterungen

Die folgenden Erweiterungen sind in Shell-Befehlen verfügbar:

%a (%A) | Die Hostadresse des Clients (Servers).
%c | Client-Informationen: user@host, user@address, ein Hostname oder nur eine Adresse, je nachdem, wie viele Informationen verfügbar sind.
%d | Der Daemon-Prozessname (argv[0]-Wert).
%h (%H) | Der Hostname oder die Adresse des Clients (Servers), falls der Hostname nicht verfügbar ist.
%n (%N) | Der Hostname des Clients (Servers) (oder "unbekannt" oder "paranoid").
%p | Die Prozess-ID des Daemons.
%s | Serverinformationen: daemon@host, daemon@address oder nur ein Daemon-Name, je nachdem, wie viele Informationen verfügbar sind.
%u | Der Benutzername des Clients (oder "unbekannt").
%% | Erweitert zu einem einzelnen '%'-Zeichen.

Zeichen in % Erweiterungen, die die Shell verwirren könnten, werden durch Unterstriche ersetzt.