Sur des machines Debian plus anciennes, on peut émettre quelque chose comme:
echo '<username>:*'|chpasswd -e
afin de changer le champ de mot de passe de l'utilisateur (<username>
) à *
.
Maintenant je suis au courant de
passwd -d <username> && passwd -l <username>
pour obtenir un effet similaire et définissez le champ du mot de passe sur !
. Cependant, sur certaines configurations plus récentes de Vanilla Ubuntu (en particulier 10.04 LTS), l’utilisateur ne peut plus se connecter à la machine (par exemple via SSH et key) - avec: Your account has expired; please contact your system administrator.
- même si passwd(1)
"avertit" que cela est possible.
Maintenant, c'est exactement ce que je veux réaliser, cependant. Changer manuellement le champ dans le fichier /etc/shadow
de !
à *
résout le problème, mais il ne semble exister aucun moyen scriptable de réaliser la même chose sans manipuler directement le shadow
fichier (par exemple avec sed
). chpasswd -e
était une alternative pratique, mais celle-ci a évidemment été supprimée.
Donc, ce que je recherche, c’est soit une variante de passwd -l
qui me permette de choisir le jeton qui est écrit dans le fichier, soit tout autre type de remplacement de la fonctionnalité exacte que chpasswd -e
offert.
NB:*
est déjà utilisé pour les comptes système, et il semble exister une différence sémantique par rapport à PAM ou autre entre !
et *
dans le champ mot de passe. .
Remarque: sur Debian 5 et 6 chpasswd -e
fonctionne. La fonctionnalité doit donc avoir été supprimée délibérément dans Ubuntu. J'ai testé Ubuntu 9.10, 10.04 (ils ne l'ont pas), 11.04 et 11.10 ont chpasswd -e
.
Utilisez un script simple comme celui que je viens d'écrire:
#!/bin/bash
USER=$1
if [[ -z "$USER" ]]; then
echo "From which user should I clear the password?"
read USER
fi
if chpasswd -e -h > /dev/null 2>&1; then
echo "$USER:*"|chpasswd -e
else
passwd -d $USER
cp /etc/shadow /etc/shadow.old
USEROLD=$USER::
USERNEW=$USER:*:
sed -i "s/$USEROLD/$USERNEW/g" /etc/shadow.old
cp /etc/shadow.old /etc/shadow
fi
L'utilisation du script est à vos risques et périls.