Was ist der Unterschied zwischen "passwd" und "chpasswd"?

14

Ich habe die Beschreibung dieses Befehls aus einem Buch gelesen,
passwd:

Ändert das Passwort für einen vorhandenen Benutzer.

chpasswd:

Liest eine Datei mit Paaren aus Anmeldenamen und Kennwort und aktualisiert die Kennwörter.

Es scheint, dass diese Befehle die gleichen Aufgaben ausführen. Gibt es einen Unterschied zwischen ihnen?

BEARBEITEN:

Ich möchte erfahren, wann wir sie verwenden, welche Datei (en) sich ändern. Ändern sie die gleiche oder eine andere Datei? Was sind sie, wenn sie unterschiedliche Dateien ändern?

Metarose
quelle
2
/etc/passwordEnthält Benutzerkontoinformationen. /etc/shadowenthält verschlüsselte Passwörter. Ich glaube, das sind die einzigen Dateien, die relevant sind. Sie könnten ein Passwort ändern, indem Sie diese Dateien manuell bearbeiten, aber es wäre sehr umständlich.
SauceCode

Antworten:

18

Von man chpasswd:

'Dieser Befehl soll in einer großen Systemumgebung verwendet werden, in der viele Konten gleichzeitig erstellt werden.'

passwd wird (meiner Erfahrung nach) normalerweise interaktiv für einen einzelnen Benutzer verwendet.

SauceCode
quelle
7

Siehe Manpages für beide:

NAME

    chpasswd - Passwörter im Batch-Modus aktualisieren

ZUSAMMENFASSUNG

    chpasswd [Optionen]

BESCHREIBUNG

    Der chpasswdBefehl liest eine Liste von Benutzernamen- und Kennwortpaaren aus der Standardeingabe und aktualisiert anhand dieser Informationen eine Gruppe vorhandener Benutzer. Jede Zeile hat das Format:

       Benutzername Passwort


NAME

    passwd - Benutzerpasswort ändern

ZUSAMMENFASSUNG

    passwd [Optionen] [LOGIN]

BESCHREIBUNG

    Der passwdBefehl ändert Kennwörter für Benutzerkonten. Ein normaler Benutzer kann nur das Passwort für sein eigenes Konto ändern, während der Superuser das Passwort für jedes Konto ändern kann.  passwdÄndert auch die Gültigkeitsdauer des Kontos oder des zugehörigen Kennworts.

MrRolling
quelle
6

In einer Nussschale:

  • passwdprüft mit, ob der STDIN (Dateideskriptor 0) an das Terminal angehängt ist isatty(0). Wenn nicht, passwdwäre eine Rettung, dh Sie können nur passwdinteraktiv arbeiten

  • chpasswdAuf der anderen Seite kann (Benutzername und) Passwort von STDIN gelesen werden und wird als Batch-Modus bezeichnet (erstellt / aktualisiert mehrere Benutzeranmeldeinformationen gleichzeitig). Es liest Passwörter (standardmäßig im Klartext) und Benutzernamen von STDIN, die im Format angegeben werden user_name:password, wobei die Einträge durch einen Zeilenumbruch voneinander getrennt werden

heemayl
quelle
0

Das habe ich allerdings gefunden

echo user:password | chpasswd

funktioniert für einige Betriebssysteme, aber einige Betriebssysteme wie debian9.10 zeigen einen Fehler an, can not connect to /var/run/nscd/socketda mit /etc/nsswitch.conf bestimmt wird, wo das Passwort gespeichert wird.

Auf der anderen Seite passwdscheint der Befehl keine interaktive Shell zu benötigen,

(echo user; echo password) | passwd

Funktioniert sowohl in physischen Hosts als auch in Containern für verschiedene Betriebssysteme (Ubuntu Xenial-Bionic, Debian9-10, Centos75-76, Coreos1855-2135)

osexp2003
quelle