J'ai un cas d'utilisation spécifique où je voudrais vraiment pouvoir changer le mot de passe d'un utilisateur avec une seule commande sans interactivité. Cela se fait de manière sécurisée (via SSH et sur un système avec un seul utilisateur pouvant être connecté), il est donc correct d'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'avoir à ajouter quelque chose de semblable à Expect à ce système pour cette seule tâche.
ubuntu
command-line-interface
freebsd
password
Paul Hoffman
la source
la source
echo "newpassword" | pw usermod theusername -h 0
Réponses:
Vous pouvez utiliser chpasswd .
la source
Vous pouvez utiliser
usermod
avec l'-p
option pour fournir un hachage de mot de passe (pas le mot de passe réel). Vous pouvez générer le hachage de mot de passe en utilisant quelque chose commemkpasswd -m sha-256
oumkpasswd -m md5
la source
usermod
: '(- Je vais corriger les balises sur la question.Sûr.
sed
script qui met à jour le fichier de mot de passe de votre système (/etc/shadow
,/etc/master.passwd
, quoi qu'il arrive à être).la source
L'
passwd
utilitaire a une option --stdin qui indique:Syntaxe:
Même si vous avez mentionné que vous ne vous souciez pas, vous pouvez mettre le mot de passe dans un fichier texte, puis le faire à la
cat pass.txt
place de la commande echo, de cette façon, il n'apparaît pas dans l'historique bash.la source
echo VerySecret | passwd --stdin username
--stdin
d'option pourpasswd
.--stdin
plus - principalement parce que c'est un gros trou de sécurité géant qui attend de se produire :-)echo "newpass" | passwd --stdin user1
ligne par un espace; De cette façon, cela n'ira pas du tout à l'histoire.Si l'
--stdin
option ne fonctionne pas, nous pouvons essentiellement utiliser deux options:chpaswd
dans votre script.echo "current_password\nnew_password\nnew_password" | passwd user_name
la source