Le fichier /etc/shadow
stocke les mots de passe utilisateur sous forme de hachages dans un format particulier.
Chaque ligne dans /etc/shadow
est une chaîne avec 9 champs séparés par ':'. Une ligne typique ressemble à ceci:
aychedee:$6$vb1tLY1qiY$M.1ZCqKtJBxBtZm1gRi8Bbkn39KU0YJW1cuMFzTRANcNKFKR4RmAQVk4rqQQCkaJT6wXqjUkFcA/qNxLyqW.U/:15405:0:99999:7:::
Les neuf domaines différents sont:
La plupart de ces champs ne sont généralement pas utilisés par les distributions Linux. Les plus importants sont le nom d'utilisateur et le hachage. Le champ de hachage lui-même est composé de trois champs différents. Ils sont séparés par '$' et représentent:
/dev/urandom permet de générer des mots de passe à la volée sous Linux.
Voici un exemple d'utilisation :
< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c8
Quelques explications sur le fonctionnement de cette commande :
Si l'on souhaite avoir un retour chariot en fin de ligne, on pourra simplement utiliser echo :
echo `< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c8`
openssl permet de créer la chaîne de hachage.
echo 'password' |openssl passwd -1 -salt QidasQKZ -stdin | cut -d" " -f1
Pour substituer le mot de passe dans un fichier de type shadow:
user1:motdepassecrypté1:655196:0:99999:7:: user2:motdepassecrypté2:655656:0:99999:7::: user3:motdepassecrypté3:655765:0:99999:7::: user4:motdepassecrypté4:655999:0:99999:7::::
utiliser le script suivant:
sed '/^'"$user"'/s/\([^:]*\):[^:]*:\(.*\)/\1:'"$newPwd"':\2/' 1erFichier
Pour substituer le mot de passe dans un fichier de type XML:
user1: password = motdepassecrypter1 lastupdate = 1234133 flags = user2: password = motdepassecrypter2 lastupdate = 1234333 flags = user3: password = motdepassecrypter3 lastupdate = 1234633 flags = user4: password = motdepassecrypter4 lastupdate = 1234933 flags =
Utiliser le scripte suivant
sed '/^'"$user"'/{N; s/\(.* = \).*/\1'"$newPwd"'/}' 2emeFichier
Pour changer un mot de passe en une ligne de commande, exécuter simplement:
echo "linuxpassword" | passwd --stdin linuxuser
ou
echo -e "linuxpassword\nlinuxpassword" | passwd linuxuser
Pour mettre à jour son propre mot de passe en tant qu'utilisateur normal, utiliser:
echo -e "your_current_pass\nlinuxpassword\nlinuxpassword" | passwd