webentwicklung-frage-antwort-db.com.de

chpasswd tut nichts stillschweigend; gibt es einen ersatz?

Nach einer Reihe von Einbruchsversuchen habe ich für alle Benutzer auf meinem Ubuntu 12.04.2 LTS-Server, auf dem Virtualmin ausgeführt wird, neue zufällige Kennwörter generiert und dann als Root chpasswd zum Ändern ihrer Kennwörter verwendet. Ich hatte ein paar falsche Benutzernamen und chpasswd hat dies erkannt und die Zeilen mit den falschen Namen korrekt gemeldet, was ich korrigiert habe.

Dann bekam ich Feedback von den Benutzern, dass ihre Passwörter nicht geändert wurden ...

Nun, es sieht so aus, als hätte chpasswd anscheinend überhaupt nichts getan - aber es hat auch keinen Fehler gemeldet, weder in der Befehlszeile noch in einem Protokoll, das ich gefunden habe.

passwd ändert Passwörter - aber leider scheint passwd auf Ubuntu die Option --stdin nicht zu akzeptieren, so dass ich alle Passwortänderungen einzeln von Hand vornehmen müsste - für fast hundert Konten. (Und ich möchte das vielleicht irgendwann noch einmal machen ...)

Ist chpasswd einfach kaputt oder kann ich es irgendwie zum Laufen bringen? Oder gibt es einen Ersatz dafür?

Und - sollte ich irgendwo einen Funktionsmangel melden? Ich glaube nicht, dass "stillschweigend scheitern" ein gutes Ergebnis ist. Vielleicht gibt es etwas auf meinem System (das Virtualmin für die Domainverwaltung verwendet, aber ansonsten ziemlich Vanilla ist), das es am Funktionieren hindert - aber wenn ja, sollte chpasswd dies erkennen und zumindest sagen können, dass es nicht funktioniert.

Aber passwd funktioniert einwandfrei, so dass es eindeutig möglich ist, Kennwörter über die Befehlszeile zu ändern ... Auf die eine oder andere Weise scheint es mir ein objektiver Funktionsmangel ("Bug") zu sein - sollte ich das melden, und wenn ja, wo?

Update: noch fremd - einige Benutzer melden, dass ihre Passwörter geändert wurden, andere melden, dass sie es nicht sind. Bei einem Benutzer mit zwei Konten wurde ein Kennwort geändert, bei einem anderen nicht. Ich habe die Datei noch einmal durchgesehen und überprüft, ob alle Konten vorhanden sind, und habe sie dann erneut durch chpasswd ausgeführt ... dieselben Ergebnisse!

Ich bin ratlos. Ideen?

UPDATE: Hier ist die Befehlszeile, die ich jetzt benutze:

cat passwords.txt | chpasswd

Wenn ich -S benutze - sehe ich keine Ausgabe - gar nichts! Es scheint also nichts zu bekommen ... aber wenn ich nur die Datei katze:

cat passwords.txt

Ich bekomme: user: password user2: hunter2 [... etc ...]

Mehr: Wenn ich die erste Zeile in NONuser (ein ungültiger Benutzer) ändere, erhalte ich einen einwandfreien Fehler:

chpasswd: (user NONuser) pam_chauthtok() failed, error:
Authentication token manipulation error
chpasswd: (line 1, user NONuser) password not changed

Also ist es is in der Tat das Lesen und Verarbeiten der Datei, zumindest so weit wie das Erkennen von Nichtbenutzern!

Oh und $? ist 0.

4
Tom Swirly

Ich habe hier viele systematische Tests durchgeführt, und ich denke nicht mehr, dass dies ein Problem mit chpasswd ist.

Stattdessen hat es etwas mit ftp zu tun - aus irgendeinem Grund hatte ftp noch die ALTEN Passwörter, aber ssh und alle anderen sicheren Protokolle hatten die neuen.

Ich habe das Problem durch Ausschalten von FTP behoben. :-D Ich hatte sowieso vor, den Daemon jedoch aus Versehen anzuhalten, anstatt ihn dauerhaft auszuschalten (mein Fehler bei der Verwendung des Virtualmin-Frontends).

Meine Theorie - es ist ein Problem mit ProFTPd oder Virtualmin -, aber ich habe keine Zeit mehr, weitere Untersuchungen durchzuführen. Ich lasse dies hier in der Hoffnung, dass es für den nächsten Kerl nützlich sein wird.

2
Tom Swirly