### Modele de

Limbajul controlului de acces implementează următoarele tipare:

- Un șir care începe cu un „.” caracter. Un nume de gazdă se potrivește dacă ultimele componente ale numelui său se potrivesc cu tiparul specificat. De exemplu, modelul ".tue.nl" se potrivește cu numele gazdei "wzv.win.tue.nl".
- Un șir care se termină cu un ''. caracter. O adresă gazdă este potrivită dacă primele sale câmpuri numerice corespund șirului dat. De exemplu, modelul „131.155”. se potrivește cu adresa (aproape) fiecărei gazde din rețeaua Universității Eindhoven (131.155.xx).
- Un șir care începe cu un caracter „@” este tratat ca un nume de grup NIS (anterior YP). Un nume de gazdă se potrivește dacă este membru gazdă al grupului net specificat. Potrivirile Netgroup nu sunt acceptate pentru numele de proces daemon sau pentru numele de utilizator ale clientului.
- O expresie a formei „nnnn / mmmm” este interpretată ca o pereche „net/mască”. O adresă gazdă IPv4 este potrivită dacă „net” este egal cu AND-ul de biți al adresei și „mască”. De exemplu, modelul net/mască „131.155.72.0/255.255.254.0” se potrivește cu toate adresele din intervalul „131.155.72.0” până la „131.155.73.255”.
- O expresie a formei '[n: n: n: n: n: n: n: n] / m' este interpretată ca o pereche '[net]/prefixlen'. O adresă de gazdă IPv6 este potrivită dacă biții „prefixlen” de „net” sunt egali cu biții „prefixlen” ai adresei. De exemplu, modelul [net]/prefixlen '[3ffe: 505: 2: 1 ::]/64' se potrivește cu fiecare adresă din intervalul '3ffe: 505: 2: 1:'? prin „3ffe: 505: 2: 1: ffff: ffff: ffff: ffff”.
- Un șir care începe cu un caracter '/' este tratat ca un nume de fișier. Un nume sau adresă de gazdă se potrivește dacă se potrivește cu orice nume de gazdă sau model de adresă enumerate în fișierul numit. Formatul fișierului este de zero sau mai multe linii cu zero sau mai multe nume de gazdă sau modele de adrese separate de spațiul alb. Un model de nume de fișier poate fi utilizat oriunde se poate folosi un nume de gazdă sau un model de adresă.
- Wildcards '*' și '?' poate fi utilizat pentru a potrivi nume de gazdă sau adrese IP. Această metodă de potrivire nu poate fi utilizată în combinație cu potrivirea 'net/mască', potrivirea numelui de gazdă începând cu '.' sau potrivirea adresei IP care se termină cu '.'

### metacaractere

Limbajul controlului de acces acceptă wildcarduri explicite:

TOATE | Wildcardul universal, se potrivește întotdeauna.
LOCAL | Se potrivește cu orice gazdă al cărei nume nu conține un caracter punct.
NECUNOSCUT | Se potrivește cu orice utilizator al cărui nume este necunoscut și se potrivește cu orice gazdă al cărui nume sau adresă este necunoscută. Acest model trebuie utilizat cu grijă: numele gazdelor pot fi indisponibile din cauza problemelor temporare ale serverului de nume. O adresă de rețea nu va fi disponibilă atunci când software-ul nu își poate da seama cu ce tip de rețea vorbește.
CUNOSCUT | Se potrivește cu orice utilizator al cărui nume este cunoscut și se potrivește cu orice gazdă al cărui nume și adresă sunt cunoscute. Acest model trebuie utilizat cu grijă: numele gazdelor pot fi indisponibile din cauza problemelor temporare ale serverului de nume. O adresă de rețea nu va fi disponibilă atunci când software-ul nu își poate da seama cu ce tip de rețea vorbește.
PARANOID | Se potrivește cu orice gazdă al cărei nume nu se potrivește cu adresa sa. Când tcpd este construit cu -DPARANOID (modul implicit), renunță la cererile de la acești clienți chiar înainte de a privi tabelele de control de acces. Construiți fără -DPARANOID atunci când doriți mai mult control asupra unor astfel de solicitări.

### operatorii

EXCEPT Utilizarea intenționată are forma: „list_1 listă EXCEPT_2”; această construcție se potrivește cu orice care se potrivește cu list_1, cu excepția cazului în care se potrivește cu list_2. Operatorul EXCEPT poate fi utilizat în daemon_lists și în client_lists. Operatorul EXCEPT poate fi cuibărit: dacă limbajul de control ar permite utilizarea parantezelor, „a EXCEPT b EXCEPT c” ar analiza ca „(a EXCEPT (b EXCEPT c))”.

### Porunci Shell

Dacă prima regulă de control de acces egal conține o comandă shell, acea comandă este supusă la% substituții (vezi secțiunea următoare). Rezultatul este executat de un proces copil /bin/sh cu intrare, ieșire și eroare standard conectate la /dev/null. Specificați un '&' la sfârșitul comenzii dacă nu doriți să așteptați până la finalizarea acesteia.

Comenzile Shell nu ar trebui să se bazeze pe setarea PATH a inetd. În schimb, ar trebui să folosească nume de cale absolute sau ar trebui să înceapă cu o instrucțiune PATH = what- ever.

### % Extinderi

Următoarele extensii sunt disponibile în cadrul comenzilor shell:

%a (%A) | Adresa gazdă a clientului (serverului).
%c | Informații despre client: utilizator @ gazdă, adresă utilizator @, nume de gazdă sau doar o adresă, în funcție de cât de multe informații sunt disponibile.
%d | Numele procesului daemon (valoarea argv[0]).
%h (%H) | Numele sau adresa gazdă client (server), dacă numele gazdă nu este disponibil.
%n (%N) | Numele gazdă al clientului (serverului) (sau „necunoscut” sau „paranoic”).
%p | ID-ul procesului daemon.
%s | Informații despre server: daemon @ gazdă, adresa daemon @ sau doar un nume daemon, în funcție de cât de multe informații sunt disponibile.
%u | Numele de utilizator al clientului (sau „necunoscut”).
%% | Se extinde la un singur „%? caracter.

Caracterele în%de extinderi care pot confunda coaja sunt înlocuite cu caractere scăzute.