Я (пытаюсь) администрировать группу Mac Minis, используемых в качестве серверов. Недавно мне нужно было изменить все их пароли, поэтому я ввел SSH и запустил эту команду, которую я использовал при создании новых учетных записей пользователей на этих машинах:
sudo dscl . passwd /Users/administrator thePassword
К сожалению, это не соответствовало тому, что я думал, когда использовал его для существующего пользователя - новый пароль - нет, thePassword
и поэтому я потерял доступ к нему sudo
. man dscl
имеет это сказать:
ПАРОЛЬ
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.
Похоже, я должен был указать старый пароль пользователя при запуске предыдущей команды, но я этого не сделал. Я знаю, какой пароль я ввел, и у меня все еще есть SSH-доступ к машинам. Если я смогу выяснить, что сделала команда, я смогу сказать, какой пароль я установил для учетных записей.
sudo dscl . passwd /Users/administrator "thePa$$word"
)dscl
попросит об этом, и, таким образом, вы не рискуете оставить конфиденциальную информацию в своей истории команд.