Mot de passe perdu pour un utilisateur sur un serveur Linux: comment le réinitialiser?

17

Sur un serveur, un utilisateur 16040 a perdu son mot de passe. J'ai un mot de passe pour root mais je n'ai pas de mot de passe pour l'utilisateur 16040. Comment réinitialiser son mot de passe?

Avec passwd 16040, unix me demande le mot de passe actuel que je n'ai pas. Existe-t-il une commande pour réinitialiser le mot de passe d'un utilisateur sans mot de passe actuel?

passwd 16040
Changing password for 16040.
Current password for [email protected]:
Catanzaro
la source

Réponses:

24

Si vous exécutez en passwd 16040tant que root, il ne vous sera pas demandé le mot de passe actuel.

Après avoir changé le mot de passe, vous devriez envisager de l’émettre chage -d 0 16040. Cela définit la dernière date de modification du mot de passe dans le passé; en supposant que les mots de passe sont définis pour expirer sur votre système, cela obligera l'utilisateur à changer son mot de passe après s'être connecté. Cela lui donne la possibilité de choisir un mot de passe qui lui est uniquement connu.

Artur Szymczak
la source
3

Vous devez émettre en passwd 16040tant que root ( sudo passwd 16040si votre utilisateur est dans le fichier sudoers) pour changer son mot de passe. Il ne vous demandera pas l'actuel.

Ou, si vous avez un accès physique à la boîte, vous pouvez ajouter en init=/bin/bashtant que paramètre du noyau pour obtenir un accès root, puis émettre passwd 16040.

peperunas
la source
3
Avoir une invite dans les commandes en ligne est plutôt déroutant et peut facilement être mal interprété comme faisant partie de la commande. Veuillez utiliser uniquement des invites dans les guillemets. De plus, # >est plutôt rare et >invite simplement à être mal interprété dans le cadre de la commande - la pratique courante consiste à utiliser un simple #pour les rootcoquilles et $pour les non-root.
Andreas Wiese
Vous avez raison, j'ai édité ma réponse par souci de clarté. Merci.
peperunas
1

Si vous ne pouvez pas vous connecter directement en tant que root, vous pouvez essayer

  • sudo /usr/bin/passwd 16040.
  • sudo -i et après /usr/bin/passwd 16040

Je suppose que passwdc'est dans / usr / bin (vous pouvez vérifier avec la commande which passwd)

Hastur
la source
sudo bashpour démarrer un rootshell est (bien que courant) une très mauvaise sudopratique. C'est sudo -sou sudo -i(non-login ou login-shell, resp.). Cela honore même votre jeu de shell par défaut /etc/passwdsans avoir à vous en soucier vous-même. De plus, bashsans un chemin complet est une mauvaise idée en soi, car ce serait l'un des premiers faux binaires dans lesquels un utilisateur malveillant placerait quelque part $PATH.
Andreas Wiese
Je suis d'accord sur la spécification complète du chemin et l'utilisation de sudo -i, et j'ai donc modifié la réponse ... mais si vous parlez de sécurité et de la possibilité d'un troian caché dans le $PATHpeut - être, il vaut mieux éviter d'utiliser sudo -scar vous ajoutez au moins le $USER/binrépertoire et tous les alias que vous pouvez imaginer ... :-)
Hastur
Bon point, en effet, mais dépend de la sudoconfiguration: la configuration par défaut livrée avec sudone conserve pas le $HOMEjeu de variables, vous finirez donc par avoir vos propres fichiers rc, pas $SUDO_USERceux de.
Andreas Wiese