Que fait cette commande: sudo dscl. passwd / Utilisateurs / administrateur thePassword

12

J'essaie (d'administrer) un groupe de Mac Minis utilisés comme serveurs. J'ai récemment eu besoin de changer tous leurs mots de passe, j'ai donc SSHed et exécuté cette commande, ce que j'ai utilisé lors de la création de nouveaux comptes d'utilisateurs sur ces machines:

sudo dscl . passwd /Users/administrator thePassword

Malheureusement, cela n'a pas fait ce que je pensais lorsqu'il était utilisé sur un utilisateur existant - le nouveau mot de passe ne l'est pas thePasswordet j'ai donc perdu l'accès à sudo. man dscla ceci à dire:

passwd

 Usage: passwd user_path [new_pasword | old_password new_pasword]

 Changes a password for a user. The user must be specified by full path,
 not just a username.  If you are authenticated to the node (either by
 specifying the -u and -P flags or by using the auth command when in
 interactive node) then you can simply specify a new password.  If you are
 not authenticated then the user's old password must be specified.  If
 passwords are not specified while in interactive mode, you will be
 prompted for them.  Passing these passwords on the command line is inher-
 ently insecure and can cause password exposure.  For better security do
 not provide the password as part of the command and you will be securely
 prompted.

Il semble donc que j'aurais dû fournir l'ancien mot de passe de l'utilisateur lors de l'exécution de cette commande précédente, mais je ne l'ai pas fait. Je sais quel mot de passe j'ai entré et j'ai toujours un accès SSH aux machines. Si je peux comprendre ce que la commande a fait, je serai en mesure de dire quel mot de passe j'ai défini sur les comptes.

MaxGabriel
la source

Réponses:

9

Ah, il se trouve que c'est la bonne façon de changer le mot de passe d'un utilisateur lors de l' utilisation sudo. Si vous n'utilisez pas sudo, alors vous devez fournir l'ancien mot de passe de l'utilisateur.

Mon problème était qu'il y avait un caractère «$» dans le mot de passe, auquel je n'ai pas échappé. Par conséquent, les mots de passe ont été coupés avant le caractère $.

MaxGabriel
la source
Cela signifie qu'une commande appropriée pour remplacer le mot de passe par le mot Pa $$ ressemble à: sudo dscl. passwd / Utilisateurs / administrateur thePa \ $ \ $ word Pas vrai?
Mark
1
Je voudrais juste citer l'argument ( sudo dscl . passwd /Users/administrator "thePa$$word")
MaxGabriel
2
Si vous faites cela depuis la console, ne fournissez pas de mot de passe. dsclvous le demandera et vous ne risquerez donc pas de laisser des informations sensibles dans votre historique de commandes.
Marcelo Cantos