Quello delle shadow password è un meccanismo presente su vari sistemi operativi Unix e Unix-like (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.
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:
/etc/shadow;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 e macOS 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, che memorizza le password cifrate nel file /etc/security/passwd.
Ogni 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:
mariorossi).14671).0).90).6).7).14800).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