Estou (tentando) administrar um grupo de Mac Minis usado como servidores. Recentemente, eu precisei alterar todas as suas senhas, então fiz o SSH e executei este comando, que foi o que eu usei ao criar novas contas de usuário nessas máquinas:
sudo dscl . passwd /Users/administrator thePassword
Infelizmente, isso não fez o que eu pensava quando usado em um usuário existente - a nova senha não é thePassword
e, portanto, perdi o acesso sudo
. man dscl
tem o que dizer:
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.
Parece que eu deveria ter fornecido a senha antiga do usuário ao executar o comando anterior, mas não o fiz. Sei qual senha inseri e ainda tenho acesso SSH às máquinas. Se eu descobrir o que o comando fez, poderei dizer qual senha eu defini nas contas.
sudo dscl . passwd /Users/administrator "thePa$$word"
)dscl
solicitará isso e, portanto, você não correrá o risco de deixar informações confidenciais em seu histórico de comandos.