Shadow (Unix)
Quello delle shadow password è un meccanismo presente su vari sistemi operativi Unix e Unix-like[1][2][3] (come ad esempio GNU/Linux) per memorizzare in forma crittografata le password di autenticazione al sistema in file accessibili solo ad utenti privilegiati (ad esempio l'utente root), in modo da rendere più difficoltoso ottenere i dati necessari per effettuare un attacco a forza bruta per scoprire le password.[4]
Con tale meccanismo, la password cifrata viene memorizzata nel file /etc/shadow, che tramite il meccanismo dei permessi è accessibile in lettura e scrittura solo ad utenti privilegiati (root); le password cifrate non sono quindi più memorizzate nel file /etc/passwd
, che è invece accessibile in lettura a tutti gli utenti del sistema, ed al loro posto vi si trova una semplice x
, ad indicare che il valore è memorizzato altrove.
I programmi che necessitano di effettuare autenticazione possono operare in due modi:
- essi sono eseguiti direttamente con i privilegi necessari per leggere il file
/etc/shadow
; - essi ricorrono ad un programma esterno che, tramite i permessi setuid e setgid, acquisisce i privilegi necessari per effettuare la sola operazione di verifica di una password.
Il file /etc/shadow
, come il file /etc/passwd
, sono file di testo, e quindi possono essere aperti con un editor di testo, come ad esempio Vi, Emacs, Gedit, Kate o Notepad.
Per modificare una password è necessario utilizzare il comando passwd.
Il comando pwconv permette di armonizzare i file /etc/shadow
e
/etc/passwd
aggiungendo gli utenti mancanti ed eliminando gli utenti non utilizzati. pwconv acquisisce i dati dai file /etc/shadow
e /etc/login.defs
.
Nei sistemi FreeBSD[5] e macOS[6] esiste un meccanismo del tutto analogo, in cui le password cifrate sono memorizzate nei file /etc/master.password
e /etc/spwd.db
. Anche con AIX vi è un meccanismo simile,[7] che memorizza le password cifrate nel file /etc/security/passwd
.
Formato del file /etc/shadow
modificaOgni riga descrive un utente del sistema, ed è composta da 9 campi separati dal delimitatore ":" (due punti).
Un esempio di file /etc/shadow
:
root:$1$Pm11DX86$t58Ta1.ErOm9TyJbQk//l.:14608:0:99999:6::: daemon:*:14545:0:99999:7::: bin:*:14545:0:99999:7::: sys:*:14545:0:99999:7::: sync:*:14545:0:99999:7::: mariorossi:$6$F5o3Sdoc$y.IdYyCK74kDS6zXxW7iFer8JdaagQAViaZJGO1Om8MPZUxn8XTml9TNLn2deLNRPNKwZAvHKfefAtnDVD5Zo/:14671:0:90:6:7:14800:9
I campi indicano, nell'ordine:
- Il nome utente (es.
mariorossi
). - La password crittografata, oppure un asterisco per indicare che non è possibile effettuare direttamente il login con quell'utente (ma occorre prima autenticarsi con un altro utente, e poi impersonare quell'utente tramite i comandi su o sudo).
- La data dell'ultima modifica della password, come numero di giorni trascorsi dal 1º gennaio 1970 (es.
14671
). - Il numero minimo di giorni che devono trascorrere prima di poter modificare la password (es.
0
). - Il massimo numero di giorni che devono intercorrere tra una modifica e l'altra di una password (es.
90
). - Il numero di giorni di preavviso della scadenza della password (es.
6
). - Il numero di giorni trascorsi i quali una password scaduta comporta la disattivazione dell'account (
7
). - La data di scadenza della password, come numero di giorni dal 1º gennaio 1970 (es.
14800
). - Un campo riservato per usi futuri (es.
9
).
Le date assolute sono scritte in giorni a partire dal 1º gennaio 1970, per modificare la data di scadenza conviene utilizzare il comando usermod
usermod -e dataDiScadenza utente
Comandi collegati
modificaNote
modifica- ^ (EN) shadow, in Linux man pages. URL consultato il 03-03-2010.
- ^ (EN) shadow, in Solaris Express Reference Manual Collection. URL consultato il 03-03-2010.
- ^ (EN) shadow, in HP-UX Reference. URL consultato il 03-03-2010.
- ^ (EN) David C. Feldmeier, Philip R. Karn, UNIX Password Security - Ten Years Later* (PDF), su citeseerx.ist.psu.edu, 1989, 6. URL consultato il 03-03-2010.
- ^ (EN) pwd_mkdb, in FreeBSD Man Pages. URL consultato il 03-03-2010.
- ^ (EN) pwd_mkdb, in macOS Man Pages. URL consultato il 03-03-2010.
- ^ (EN) /etc/security/passwd File, in Documentazione AIX — Commands Reference. URL consultato il 03-03-2010.