### Patterns

Il linguaggio di controllo degli accessi implementa i seguenti schemi:

- Una stringa che inizia con un '.' carattere. Un nome host viene abbinato se gli ultimi componenti del suo nome corrispondono al modello specificato. Ad esempio, il modello '.tue.nl' corrisponde al nome host 'wzv.win.tue.nl'.
- Una stringa che termina con un '.' carattere. Un indirizzo host viene abbinato se i suoi primi campi numerici corrispondono alla stringa specificata. Ad esempio, il modello "131.155". corrisponde all'indirizzo di (quasi) ogni host sulla rete dell'Università di Eindhoven (131.155.xx).
- Una stringa che inizia con un carattere '@' viene considerata come un nome di netgroup NIS (precedentemente YP). Un nome host viene abbinato se è un membro host del netgroup specificato. Le corrispondenze di netgroup non sono supportate per i nomi dei processi daemon o per i nomi utente client.
- Un'espressione della forma 'nnnn / mmmm' viene interpretata come una coppia 'net/mask'. Un indirizzo host IPv4 viene abbinato se 'net' è uguale all'AND bit a bit dell'indirizzo e alla 'maschera'. Ad esempio, il modello net/mask '131.155.72.0/255.255.254.0' corrisponde a tutti gli indirizzi nell'intervallo da '131.155.72.0' a '131.155.73.255'.
- Un'espressione della forma '[n: n: n: n: n: n: n: n] / m' viene interpretata come una coppia '[net]/prefixlen'. Un indirizzo host IPv6 viene associato se i bit "prefixlen" di "net" sono uguali ai bit "prefixlen" dell'indirizzo. Ad esempio, il modello [net]/prefixlen '[3ffe: 505: 2: 1 ::]/64' corrisponde a tutti gli indirizzi nell'intervallo '3ffe: 505: 2: 1:'? tramite "3ffe: 505: 2: 1: ffff: ffff: ffff: ffff".
- Una stringa che inizia con un carattere '/' viene trattata come un nome file. Un nome host o indirizzo viene abbinato se corrisponde a qualsiasi nome host o modello di indirizzo elencato nel file indicato. Il formato del file è zero o più righe con zero o più nomi host o schemi di indirizzi separati da spazi bianchi. Un modello di nome file può essere utilizzato ovunque sia possibile utilizzare un nome host o un modello di indirizzo.
- Caratteri jolly '*' e '?' può essere utilizzato per abbinare nomi host o indirizzi IP. Questo metodo di corrispondenza non può essere utilizzato insieme alla corrispondenza "net/mask", la corrispondenza del nome host inizia con "." o corrispondenza dell'indirizzo IP che termina con '.'.

### I caratteri jolly

Il linguaggio di controllo dell'accesso supporta caratteri jolly espliciti:

TUTTI | Il carattere jolly universale corrisponde sempre.
LOCALE | Corrisponde a qualsiasi host il cui nome non contiene un carattere punto.
SCONOSCIUTO | Corrisponde a qualsiasi utente il cui nome è sconosciuto e corrisponde a qualsiasi host il cui nome o indirizzo sono sconosciuti. Questo modello deve essere usato con cura: i nomi host potrebbero non essere disponibili a causa di problemi temporanei del server dei nomi. Un indirizzo di rete non sarà disponibile quando il software non è in grado di capire con quale tipo di rete sta parlando.
CONOSCIUTO | Corrisponde a qualsiasi utente il cui nome è noto e corrisponde a qualsiasi host il cui nome e indirizzo sono noti. Questo modello deve essere usato con cura: i nomi host potrebbero non essere disponibili a causa di problemi temporanei del server dei nomi. Un indirizzo di rete non sarà disponibile quando il software non è in grado di capire con quale tipo di rete sta parlando.
PARANOICO | Corrisponde a qualsiasi host il cui nome non corrisponde al suo indirizzo. Quando tcpd è creato con -DPARANOID (modalità predefinita), elimina le richieste da tali client anche prima di guardare le tabelle di controllo degli accessi. Crea senza -DPARANOID quando desideri un maggiore controllo su tali richieste.

### operatori

TRANNE L' uso previsto è nel formato: 'list_1 EXCEPT list_2'; questo costrutto corrisponde a tutto ciò che corrisponde a list_1 a meno che non corrisponda a list_2. L'operatore EXCEPT può essere utilizzato in daemon_lists e in client_lists. L'operatore EXCEPT può essere nidificato: se la lingua di controllo consentirebbe l'uso delle parentesi, "a EXCEPT b EXCEPT c" analizzerebbe come "(a EXCEPT (b EXCEPT c))".

### Comandi Shell

Se la regola di controllo di accesso con prima corrispondenza contiene un comando shell, tale comando è soggetto a% sostituzioni (vedere la sezione successiva). Il risultato viene eseguito da un processo figlio /bin/sh con input, output ed errore standard collegati a /dev/null. Specificare un '&' alla fine del comando se non si desidera attendere fino al completamento.

I comandi della shell non devono fare affidamento sull'impostazione PATH di inetd. Invece, dovrebbero usare nomi di percorso assoluti o dovrebbero iniziare con un'istruzione esplicita PATH = what-ever.

### % Espansioni

Le seguenti espansioni sono disponibili nei comandi shell:

%a (%A) | L'indirizzo host del client (server).
%c | Informazioni sul cliente: user@host, user@address, un nome host o solo un indirizzo, a seconda della quantità di informazioni disponibili.
%d | Il nome del processo daemon (valore argv[0]).
%h (%H) | Il nome host o l'indirizzo del client (server), se il nome host non è disponibile.
%n (%N) | Il nome host del client (server) (o "sconosciuto" o "paranoico").
%p | L'ID del processo daemon.
%s | Informazioni sul server: daemon@host, daemon@address o solo un nome daemon, a seconda della quantità di informazioni disponibili.
%u | Il nome utente del client (o "sconosciuto").
%% | Si espande in un singolo '%? carattere.

I caratteri in%espansioni che possono confondere la shell sono sostituiti da caratteri di sottolineatura.