J'ai lu la description de ces commandes dans un livre,
passwd:
Modifie le mot de passe d'un utilisateur existant.
chpasswd:
Lit un fichier de paires nom d'utilisateur / mot de passe et met à jour les mots de passe.
Il semble que ces commandes fassent le même travail. Y a-t-il une différence entre eux?
ÉDITER:
Je veux savoir quand nous les utilisons quel (s) fichier (s) changer. Modifient-ils le même fichier ou un fichier différent? S'ils changent des fichiers différents, quels sont-ils?
linux
command-line
métarose
la source
la source
/etc/password
contient des informations sur le compte utilisateur./etc/shadow
contient des mots de passe cryptés. Je pense que ce sont les seuls fichiers pertinents. Vous pouvez changer un mot de passe en modifiant manuellement ces fichiers, mais ce serait très gênant.Réponses:
De
man chpasswd
:«Cette commande est destinée à être utilisée dans un grand environnement système où de nombreux comptes sont créés en même temps.»
passwd
est (selon mon expérience) normalement utilisé de manière interactive pour un seul utilisateur.la source
Voir les pages de manuel pour les deux:
la source
En un mot:
passwd
vérifie si le STDIN (descripteur de fichier 0) est attaché au terminal, en utilisantisatty(0)
. Dans le cas contraire,passwd
renflouerait -à- dire que vous ne pouvez travailler avecpasswd
interactivechpasswd
, d'autre part, est conçu pour lire (nom d'utilisateur et) mot de passe depuis STDIN, et est appelé le mode batch (crée / met à jour plusieurs informations d'identification utilisateur à la fois). Il lit le (s) mot (s) de passe (en texte clair par défaut), et le (s) nom (s) d'utilisateur de STDIN, donnés dans le formatuser_name:password
, avec une nouvelle ligne séparant les entréesla source
J'ai trouvé que même si
fonctionne pour certains systèmes d'exploitation, mais certains systèmes d'exploitation tels que debian9,10 afficheront une erreur
can not connect to /var/run/nscd/socket
car ils utilisent /etc/nsswitch.conf pour déterminer où ils stockent le mot de passe.D'un autre côté, la
passwd
commande ne semble pas avoir besoin de shell interactif,fonctionne pour moi à la fois dans l'hôte physique et le conteneur, pour divers systèmes d'exploitation (ubuntu xenial-bionic, debian9-10, centos75-76, coreos1855-2135)
la source