### Motifs

Le langage de contrôle d'accès implémente les modèles suivants:

- Une chaîne qui commence par un '.' personnage. Un nom d'hôte est mis en correspondance si les derniers composants de son nom correspondent au modèle spécifié. Par exemple, le modèle '.tue.nl' correspond au nom d'hôte 'wzv.win.tue.nl'.
- Une chaîne qui se termine par un «.» personnage. Une adresse d'hôte est mise en correspondance si ses premiers champs numériques correspondent à la chaîne donnée. Par exemple, le modèle «131.155». correspond à l'adresse de (presque) chaque hôte du réseau de l'Université d'Eindhoven (131.155.xx).
- Une chaîne qui commence par un caractère «@» est traitée comme un nom de groupe de réseaux NIS (anciennement YP). Un nom d'hôte est mis en correspondance s'il est membre d'hôte du groupe de réseaux spécifié. Les correspondances de Netgroup ne sont pas prises en charge pour les noms de processus démon ou pour les noms d'utilisateur client.
- Une expression de la forme «nnnn / mmmm» est interprétée comme une paire «net/masque». Une adresse d'hôte IPv4 est mise en correspondance si «net» est égal au ET au niveau du bit de l'adresse et du «masque». Par exemple, le modèle de réseau / masque «131.155.72.0/255.255.254.0» correspond à chaque adresse dans la plage «131.155.72.0» à «131.155.73.255».
- Une expression de la forme «[n: n: n: n: n: n: n: n] / m» est interprétée comme une paire «[net]/prefixlen». Une adresse d'hôte IPv6 est mise en correspondance si les bits «prefixlen» de «net» sont égaux aux bits «prefixlen» de l'adresse. Par exemple, le modèle [net]/prefixlen '[3ffe: 505: 2: 1 ::]/64' correspond à chaque adresse de la plage '3ffe: 505: 2: 1:'? jusqu'à «3ffe: 505: 2: 1: ffff: ffff: ffff: ffff».
- Une chaîne qui commence par un caractère '/' est traitée comme un nom de fichier. Un nom d'hôte ou une adresse est mis en correspondance s'il correspond à un nom d'hôte ou à un modèle d'adresse répertorié dans le fichier nommé. Le format de fichier est zéro ou plusieurs lignes avec zéro ou plusieurs noms d'hôte ou modèles d'adresse séparés par des espaces. Un modèle de nom de fichier peut être utilisé partout où un modèle d'hôte ou d'adresse peut être utilisé.
- Caractères génériques '*' et '?' peut être utilisé pour faire correspondre les noms d'hôte ou les adresses IP. Cette méthode de correspondance ne peut pas être utilisée conjointement avec la correspondance «net/mask», la correspondance du nom d'hôte commençant par «.» ou correspondance d'adresse IP se terminant par '.'.

### Caractères génériques

Le langage de contrôle d'accès prend en charge les caractères génériques explicites:

TOUT | Le caractère générique universel correspond toujours.
LOCAL | Correspond à tout hôte dont le nom ne contient pas de caractère point.
INCONNUE | Correspond à tout utilisateur dont le nom est inconnu et correspond à tout hôte dont le nom ou l'adresse sont inconnus. Ce modèle doit être utilisé avec précaution: les noms d'hôte peuvent ne pas être disponibles en raison de problèmes temporaires de serveur de noms. Une adresse réseau ne sera pas disponible lorsque le logiciel ne pourra pas déterminer à quel type de réseau il parle.
CONNU | Correspond à tout utilisateur dont le nom est connu et correspond à tout hôte dont le nom et l'adresse sont connus. Ce modèle doit être utilisé avec précaution: les noms d'hôte peuvent ne pas être disponibles en raison de problèmes temporaires de serveur de noms. Une adresse réseau ne sera pas disponible lorsque le logiciel ne pourra pas déterminer à quel type de réseau il parle.
PARANOÏAQUE | Correspond à tout hôte dont le nom ne correspond pas à son adresse. Lorsque tcpd est construit avec -DPARANOID (mode par défaut), il supprime les requêtes de ces clients avant même de consulter les tables de contrôle d'accès. Générez sans -DPARANOID lorsque vous souhaitez plus de contrôle sur ces demandes.

### Les opérateurs

SAUF L'utilisation prévue est de la forme: 'list_1 EXCEPT list_2'; cette construction correspond à tout ce qui correspond à list_1, sauf si elle correspond à list_2. L'opérateur EXCEPT peut être utilisé dans daemon_lists et dans client_lists. L'opérateur EXCEPT peut être imbriqué: si le langage de contrôle permet l'utilisation de parenthèses, «a EXCEPT b EXCEPT c» est analysé comme «(a EXCEPT (b EXCEPT c))».

### Commandes shell

Si la première règle de contrôle d'accès correspondant contient une commande shell, cette commande est soumise à% substitutions (voir section suivante). Le résultat est exécuté par un processus enfant /bin/sh avec une entrée, une sortie et une erreur standard connectées à /dev/null. Spécifiez un «&» à la fin de la commande si vous ne voulez pas attendre qu'elle soit terminée.

Les commandes shell ne doivent pas s'appuyer sur le paramètre PATH de inetd. Au lieu de cela, ils devraient utiliser des noms de chemin absolus ou commencer par une instruction PATH = what-ever explicite.

### % D'expansion

Les extensions suivantes sont disponibles dans les commandes shell:

%a (%A) | L'adresse d'hôte du client (serveur).
%c | Informations sur le client: utilisateur @ hôte, utilisateur @ adresse, un nom d'hôte ou simplement une adresse, selon la quantité d'informations disponibles.
%d | Le nom du processus démon (valeur argv[0]).
%h (%H) | Le nom d'hôte ou l'adresse du client (serveur), si le nom d'hôte n'est pas disponible.
%n (%N) | Le nom d'hôte du client (serveur) (ou "inconnu" ou "paranoïaque").
%p | L'ID du processus démon.
%s | Informations sur le serveur: daemon@host, daemon@address ou simplement un nom de démon, selon la quantité d'informations disponibles.
%u | Le nom d'utilisateur du client (ou "inconnu").
%% | Se développe à un seul%? personnage.

Les caractères en%d'extensions qui peuvent perturber le shell sont remplacés par des traits de soulignement.