PAM sta per Pluggable Authentication Modules.E ‘un meccanismo utilizzato per definire le politiche di autenticazione. Se andate alla directory /etc/pam.d, potete trovare un sacco di file, ognuno legato a una diversa applicazione. Prendiamo il file halt in /etc/pam.d/ come primo esempio:
#%PAM-1.0 auth sufficient pam_rootok.so auth required pam_console.so #auth include system-auth account required pam_permit.so
Secondo il suo nome, questo file è associato con il comando halt. Le linee che iniziano con il carattere “#” sono commenti. Ogni altra linea è composta di tre parti: module interface, control flag e module name con zero o più argomenti. Ci sono quattro tipi di module interface:
auth: questa interfaccia è dedicata l’autenticazione dell’utente, normalmente fatta attraverso una richiesta di login e password. Inoltre, l’appartenenza al gruppo e l’ambiente dell’utente vengono definiti (definizione della localizzazione home directory e punti di montaggio, ecc.) session: questa interfaccia costruisce l’ambiente utente e lo rimuove al termine della connessione. Ad esempio, un messaggio di login viene scritto nel registro di sistema. Una chiamata al Automounter può anche essere fatta. account: questa interfaccia definisce di controllo di accesso (giorni e ore in cui l’accesso è negato, la scadenza dell’account, la politica di modifica della password, ecc). Password: questa interfaccia è utilizzata solo per l’aggiornamento della password. Un modulo può fornire qualsiasi o tutte le interfacce. Ci sono cinque principali control flag: requisite: un modulo contrassegnato come requisito deve riuscire, altrimenti il fallimento è immediatamente segnalato. required: un modulo contrassegnato come richiesto deve riuscire troppo, ma altri moduli sono ancora in esecuzione. Lo scopo è quello di nascondere il nome del modulo malfunzionante. sufficient: un modulo definito come sufficiente è sufficiente riportare successo se un modulo contrassegnato come richiesto precedentemente fallito. Se fallisce, non c’è alcuna conseguenza, il modulo successivo viene richiamato. optional: un modulo notato come optional può fallire o avere successo, il risultato viene ignorato, tranne se è l’unico modulo nello stack. include: il flag di controllo inserisce il contenuto del file che lo segue. Questo permette comportamenti comuni di essere uniti e utilizzati come sottocomponente.
Manteniamo solo le righe che ci interessano, il file /etc/pam.d/halt diventa:
auth sufficient pam_rootok.so auth required pam_console.so account required pam_permit.so
Questo può essere tradotto nel seguente criterio:
- di poter arrestare il server, è necessario essere root (pam_rootok.so verifica che UID è 0) o essere collegato alla console (pam_console.so).
- l’ultima riga è presente per consentire l’esecuzione del comando di arresto.