J'ai un cas d'utilisation spécifique où j'aimerais vraiment pouvoir modifier le mot de passe d'un utilisateur avec une seule commande sans interactivité. Cela se fait de manière sûre (sur SSH et sur un système avec un seul utilisateur capable d'être connecté), il convient donc d'accord pour exposer le nouveau mot de passe (et même l'ancien, si nécessaire) sur la ligne de commande. FWIW, c'est un système Ubuntu.
Je veux juste éviter d'ajouter quelque chose d'attendre à ce système pour cette seule tâche.
Vous pouvez utiliser chapasswd .
echo user:pass | /usr/sbin/chpasswd
Vous pouvez utiliser usermod
avec le -p
Option pour fournir un hash de mot de passe (pas le mot de passe réel). Vous pouvez générer le hasch de mot de passe en utilisant quelque chose comme mkpasswd -m sha-256
ou mkpasswd -m md5
Sûr.
sed
qui met à jour le fichier de mot de passe de votre système (/etc/shadow
, /etc/master.passwd
, peu importe ce qu'il arrive).L'utilitaire passwd
a une option -stdin qui indique:
Cette option est utilisée pour indiquer que PassWD doit lire le nouveau mot de passe à partir d'une entrée standard, qui peut être un tuyau.
Syntaxe:
echo "newpass" | passwd --stdin user1
Même si vous avez mentionné que vous ne vous souciez pas, vous pouvez mettre le mot de passe dans un fichier texte, puis faire cat pass.txt
Au lieu de la commande ECHO, de cette façon, cela ne se présente pas dans l'histoire de Bash.
Si --stdin
L'option ne fonctionne pas Nous pouvons essentiellement utiliser deux options:
chpaswd
dans votre script.echo "current_password\nnew_password\nnew_password" | passwd user_name