Comment changer le mot de passe en utilisant usermod?

10

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é?

Mr Coder
la source
la meilleure réponse est ici: askubuntu.com/a/80447/55435 , note pour vérifier les commentaires aussi
ryenus

Réponses:

17

Le usermod -pdrapeau s'attend à ce que les données soient déjà le mot de passe dans un format crypté.

Utilisez openssl passwdpour générer les données chiffrées, ou procédez comme suit:

usermod -p `openssl passwd` (USERNAME)
Rorik
la source
openssl passwdattend un mot de passe de 0 à 10 caractères.
anonyme
6

La raison pour laquelle cela n'a pas fonctionné est que usermodl'option -p s'attend à ce que le mot de passe soit déjà crypté.

À partir de usermodla 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 passwdpour plus d'informations sur la configuration, par exemple le délai d'expiration.

Bonne chance!

Zoke
la source
6

Vous pouvez utiliser passwd:

sudo passwd USERNAME 

Vous n'en sudoavez pas besoin si vous êtes vous-même superutilisateur

RiaD
la source
sudonécessite un mot de passe root :)
Achu
@Achu: c'est le mot de passe utilisateur actuel requis. Mais il est superutilisateur.
RiaD
Que superuserreprésente?
Achu
3

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' -pargument.

SALT="Q9"
PLAINTEXT="secret_password"
HASH=$(perl -e "print crypt(${PLAINTEXT},${SALT})")
echo "Password Hash = \"${HASH}\""

Utilisez ensuite cela dans votre usermod -pargument de ligne de commande:

usermod -p ${HASH} john
Truite Waldo
la source
2

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 -pnécessite un mot de passe crypté pour fonctionner. Veuillez noter que le new-passwordsera visible pour les utilisateurs qui peuvent lister les processus.

Benoy G
la source
2

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}

gstanden
la source
1

Tapez simplement

passwd

De cette façon, un utilisateur normal peut changer son propre mot de passe sans privilège root si ce n'est pas le cas.

Achu
la source