J'ai lu la description de ces commandes à partir d'un livre,
passwd :
Modifie le mot de passe pour un utilisateur existant.
chapasswd :
Lit un fichier de nom de connexion et de paires de mots de passe et met à jour les mots de passe.
Il semble que ces commandes font de même emplois. Y a-t-il une différence entre eux?
ÉDITER:
Je veux apprendre quand nous les utilisons quel (s) fichier change (s). Est-ce qu'ils changent le même fichier ou le même fichier? S'ils changent différents fichiers, que sont-ils?
De man chpasswd
:
"Cette commande est destinée à être utilisée dans un environnement système important dans lequel de nombreux comptes sont créés à un moment donné."
passwd
est (dans mon expérience) normalement utilisé de manière interactive pour un seul utilisateur.
En un mot:
passwd
vérifie si le stdin (descripteur de fichier 0) est connecté à la borne, à l'aide de isatty(0)
. Sinon, passwd
va caution I.e. Vous ne pouvez travailler que avec passwd
de manière interactive
chpasswd
, d'autre part, est conçu pour lire (nom d'utilisateur et) mot de passe de STDIN et s'appelle le mode BATCH (crée/met à jour plusieurs informations d'identification d'utilisateur à la fois). Il lit le (s) mot de passe (s) (en texte clair par défaut) et nom d'utilisateur (s) de Stdin, indiqué dans le format user_name:password
, avec la nouvelle ligne séparant les entrées
Voir les pages de l'homme pour les deux:
NOM
cHPASSWD - Mettre à jour les mots de passe en mode batch
SYNOPSIS
chpasswd
[Options]LA DESCRIPTION
Le
chpasswd
command lit une liste des paires de noms d'utilisateur et de mot de passe à partir de saisie standard et utilise ces informations pour mettre à jour un groupe d'utilisateurs existants. Chaque ligne est du format:Identifiant Mot de passe
NOM
pASSWD - Changer le mot de passe de l'utilisateur
SYNOPSIS
passwd
[Options] [Connexion]LA DESCRIPTION
Le
passwd
command modifie les mots de passe des comptes d'utilisateurs. Un utilisateur normal ne peut modifier que le mot de passe de son propre compte, tandis que le superutilisateur peut modifier le mot de passe pour n'importe quel compte.passwd
Salo modifie le compte ou la période de validité de votre mot de passe associé.
J'ai trouvé que même si
echo user:password | chpasswd
fonctionne pour certains OSES, mais certains OS tels que Debian9,10 montreront une erreur can not connect to /var/run/nscd/socket
Depuis qu'il utilise /etc/nsswitch.conf pour déterminer où il stocke le mot de passe.
De l'autre côté, la commande passwd
semble pas nécessairement besoin d'une coque interactive,
(echo user; echo password) | passwd
travaille pour moi à la fois dans l'hôte physique et le conteneur, pour divers OSES (Ubuntu Xenial-Bionic, Debian9-10, Centos75-76, Coreos1855-2135)