Dans la version actuelle de Raspian, je sais qu'il est possible de changer le mot de passe de l'utilisateur actuellement connecté à partir de la ligne de commande comme suit:
sudo passwd
qui invitera alors l'utilisateur à entrer un nouveau mot de passe deux fois. Cela produira une sortie comme ceci:
Changing password for pi.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Je me demandais s'il y avait un moyen possible de changer un mot de passe par programme, comme à partir d'un script shell.
J'essaie de créer un script de configuration à déployer sur mon Raspberry Pis et je ne veux pas avoir à taper manuellement de nouveaux mots de passe pour eux.
sudo
. Si vous utilisez,sudo
vous pouvez forcer un nouveau mot de passe pour n'importe quel utilisateur sans avoir besoin de connaître le mot de passe actuel de cet utilisateur.expect(1)
pourrait aussi aider.Réponses:
Vous recherchez la
chpasswd
commande. Vous feriez quelque chose comme ça:Notez qu'il doit être exécuté en tant que root, au moins avec la configuration PAM par défaut. Mais il est probable que l'exécution en tant que root n'est pas un problème pour un script de déploiement système.
En outre, vous pouvez faire plusieurs utilisateurs à la fois en lui fournissant plusieurs lignes d'entrée.
la source
Une autre alternative consiste à utiliser la
yes
commande dans votre script.Cela enverra
newpassword
à lapasswd
commande pouryouruser
.Il convient de mentionner que la définition / modification de mots de passe utilisateur via des scripts peut présenter des risques de sécurité et doit être évitée autant que possible.
ÉDITER:
Cette réponse nécessite un accès root. Toutes mes excuses pour ne pas l'avoir mentionné précédemment. C'est une méthode que j'utilise lors de l'exécution de tâches d'administration qui nécessitent un accès root.
la source
passwd
lecture s'effectue depuisstdin
plutôt qu'un terminal (clavier), comment cela peut-il fonctionner lorsque vouspasswd
demandez d'abord l'ancien mot de passe d'un utilisateur, puis le nouveau?youruser
à la fin). Cela pourrait fonctionner quelque part ...passwd
commande des utilitaires cachés de Linux accepte les entrées redirigées (contrairement par exemple à OpenSSHssh
). L'utilisationyes
n'est cependant pas une bonne idée: elle expose le mot de passe aux espions qui consultent la liste des processus au mauvais moment. L'utilisationecho
n'aurait pas ce défaut car c'est un shell intégré.