Après une série de tentatives d'intrusion, j'ai généré de nouveaux mots de passe aléatoires pour tous les utilisateurs de mon serveur Ubuntu 12.04.2 LTS exécutant Virtualmin, puis, en tant que root, utilisé chpasswd pour modifier leurs mots de passe. J'ai eu quelques mauvais noms d'utilisateurs, et chpasswd l'a détectée et a correctement signalé les lignes avec les mauvais noms, ce que j'ai corrigé.
Ensuite, j'ai commencé à avoir des retours des utilisateurs sur le fait que leurs mots de passe n'avaient pas été changés ...
Eh bien, il semble que chpasswd ne semble avoir rien fait du tout - mais il n'a pas non plus signalé d'erreur, que ce soit sur la ligne de commande ou dans un journal quelconque que j'ai trouvé.
passwd change les mots de passe - mais malheureusement, passwd sur Ubuntu ne semble pas accepter l'option --stdin, je devrais donc faire tous les changements de mot de passe à la main, un à la fois - pour près de cent comptes. (Et je pourrais vouloir refaire cela à un moment donné ...)
Est-ce que chpasswd est simplement cassé, ou y at-il un moyen de le faire fonctionner? Ou, y a-t-il un substitut pour cela?
Et - devrais-je signaler un défaut de fonctionnalité quelque part? Je ne crois pas que "échouer en silence" est un bon résultat. Peut-être y at-il quelque chose sur mon système (qui utilise Virtualmin pour la gestion de domaine mais qui est par ailleurs tout à fait Vanilla) qui l’empêche de fonctionner - mais si tel est le cas, chpasswd devrait pouvoir le détecter et au moins dire qu’il a échoué.
Mais passwd fonctionne parfaitement bien, il est donc clairement possible de changer les mots de passe à partir de la ligne de commande ... D'une manière ou d'une autre, cela me semble être un défaut de fonctionnalité objective ("bogue") - devrais-je le signaler, et si oui, où?
Mise à jour: encore inconnue - certains utilisateurs signalent que leurs mots de passe ont été modifiés et d'autres signalent qu'ils ne le sont pas. Un utilisateur qui a deux comptes a un mot de passe changé, un non. J'ai parcouru le fichier encore une fois, en vérifiant que tous les comptes étaient présents, puis ensuite dans chpasswd ... les mêmes résultats!
Je suis dérouté. Des idées?
UPDATE: Voici la ligne de commande que j'utilise maintenant:
cat passwords.txt | chpasswd
Si j'utilise -S - je ne vois aucune sortie - rien du tout! Donc, il semble que rien ne se passe ... mais si je raccroche le fichier:
cat passwords.txt
Je reçois: utilisateur: mot de passe utilisateur2: hunter2 [... etc ...]
Plus: Si je change la première ligne pour être NONuser (un utilisateur invalide), j'obtiens une erreur parfaitement correcte:
chpasswd: (user NONuser) pam_chauthtok() failed, error:
Authentication token manipulation error
chpasswd: (line 1, user NONuser) password not changed
Donc est en fait lire et traiter le fichier, du moins en ce qui concerne la détection des non-utilisateurs!
Oh et $? est 0.
J'ai fait beaucoup de tests systématiques ici, et je ne pense plus qu'il s'agisse d'un problème avec chpasswd.
Au lieu de cela, c'est quelque chose à voir avec ftp - pour une raison quelconque, ftp avait toujours les mots de passe OLD, mais ssh et tous les autres protocoles sécurisés avaient les nouveaux.
Je l'ai corrigé en désactivant FTP. :-D J'avais l'intention de le faire quand même, mais j'avais accidentellement arrêté le démon plutôt que de le désactiver de façon permanente (mon erreur d'utiliser le frontal Virtualmin).
Ma théorie - c'est un problème avec ProFTPd ou Virtualmin - mais je n'ai plus le temps d'enquêter davantage. Je laisse cela ici dans l'espoir que cela sera utile pour le prochain gars.