Je suis superadmin d'un serveur et j'aime changer le mot de passe d'un utilisateur existant. Comment puis je faire ça ?
j'ai essayé
usermod -p 'new-password' john
mais ça n'a pas marché?
Je suis superadmin d'un serveur et j'aime changer le mot de passe d'un utilisateur existant. Comment puis je faire ça ?
j'ai essayé
usermod -p 'new-password' john
mais ça n'a pas marché?
Réponses:
Le usermod -p
drapeau s'attend à ce que les données soient déjà le mot de passe dans un format crypté.
Utilisez openssl passwd
pour générer les données chiffrées, ou procédez comme suit:
usermod -p `openssl passwd` (USERNAME)
openssl passwd
attend un mot de passe de 0 à 10 caractères.
La raison pour laquelle cela n'a pas fonctionné est que usermod
l'option -p s'attend à ce que le mot de passe soit déjà crypté.
À partir de usermod
la page de manuel de:
-p, --password PASSWORD
The encrypted password, as returned by crypt(3).
Il n'est pas recommandé de définir un mot de passe de cette manière.
Au lieu de cela, vous devez utiliser passwd <username>
. Cela devrait (comme usermod
) être fait en tant que root (si vous ne modifiez pas le mot de passe des utilisateurs actuellement connectés).
Pour changer le mot de passe de l'utilisateur foo.
sudo passwd foo
Cela vous demandera un nouveau mot de passe.
Jetez un œil à la page de manuel passwd
pour plus d'informations sur la configuration, par exemple le délai d'expiration.
Bonne chance!
La façon d'attribuer un mot de passe avec usermod (qui est ce que l'OP a réellement demandé) est d'utiliser un crypt()
mot de passe haché pour l' -p
argument.
SALT="Q9"
PLAINTEXT="secret_password"
HASH=$(perl -e "print crypt(${PLAINTEXT},${SALT})")
echo "Password Hash = \"${HASH}\""
Utilisez ensuite cela dans votre usermod -p
argument de ligne de commande:
usermod -p ${HASH} john
Une commande à ligne unique non interactive pour changer le mot de passe d'un utilisateur:
sudo usermod -p `perl -e "print crypt("new-password","Q4")"` john
usermod -p
nécessite un mot de passe crypté pour fonctionner. Veuillez noter que le new-password
sera visible pour les utilisateurs qui peuvent lister les processus.
Quelque chose qui devrait être ajouté ici est le suivant. Cette méthode:
sudo usermod -p perl -e "print crypt("new-password","Q4")"
john
signifie que plusieurs mots de passe très similaires fonctionneront TOUS. Par exemple, sur le serveur Oracle Linux 7.4 et le bureau Ubuntu 17.10, considérez:
sudo usermod -p perl -e "print crypt("borkling","Q4")"
orabuntu
Maintenant, si l'on fait:
su - orabuntu
vous constaterez que TOUT mot de passe commençant par "borkling" fonctionnera, par exemple
borkling88 borklingjars
bien que "borkline" ne fonctionnera pas, car comme indiqué précédemment, tout mot de passe qui a "borkling" comme préfixe fonctionnera également lorsque le mot de passe est défini de cette manière.
Un moyen pour cela que afaik n'a pas cet effet secondaire indésirable est le suivant:
(le mérite revient à "Sandeep" ici:
/programming/2150882/how-to-automatically-add-user-account-and-password-with-a-bash-script )
Sur RedHaty Linux: (omettez la "roue -G" si vous ne voulez pas que les privilèges sudo soient accordés)
sudo useradd -m -p $ (openssl passwd -1 $ {PASSWORD}) -s / bin / bash -G wheel $ {USERNAME}
Sur Debiany Linux (omettez le -G sudo si vous ne voulez pas de privilèges sudo):
sudo useradd -m -p $ (openssl passwd -1 $ {PASSWORD}) -s / bin / bash -G sudo $ {USERNAME}