В текущей версии Raspian я знаю, что можно изменить пароль текущего зарегистрированного пользователя из командной строки следующим образом:
sudo passwd
который затем побудит пользователя ввести новый пароль дважды. Это даст результат примерно так:
Changing password for pi.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Мне было интересно, есть ли возможный способ изменить пароль программно, как из сценария оболочки.
Я пытаюсь создать сценарий конфигурации для развертывания на моем Raspberry Pis и не хочу вручную вводить новые пароли для них.
sudo
. Если вы используете его,sudo
вы можете ввести новый пароль для любого пользователя без необходимости знать текущий пароль этого пользователя.expect(1)
также может помочь.Ответы:
Вы ищете
chpasswd
команду. Вы бы сделали что-то вроде этого:Обратите внимание, что его нужно запускать с правами root, по крайней мере, с конфигурацией PAM по умолчанию. Но, по-видимому, запуск от имени пользователя root не является проблемой для сценария развертывания системы.
Кроме того, вы можете сделать несколько пользователей одновременно, введя в него несколько строк ввода.
источник
Другой альтернативой является использование
yes
команды в вашем скрипте.Это будет отправить
newpassword
вpasswd
команду дляyouruser
.Следует отметить, что установка / изменение пользовательских паролей с помощью сценариев может представлять угрозу безопасности, и их следует по возможности избегать.
РЕДАКТИРОВАТЬ:
Этот ответ требует root-доступа. Извиняюсь за то, что не упомянул об этом ранее. Это метод, который я использую при выполнении задач администрирования, требующих root-доступа.
источник
passwd
чтение,stdin
а не с терминала (клавиатуры), как это может работать, когдаpasswd
сначала запрашивается старый пароль пользователя, а затем запрашивается новый?youruser
в конце). Это может работать где-то ...passwd
теневых утилит Linux принимает перенаправленный ввод (в отличие, например, от OpenSSHssh
). Использованиеyes
не является хорошей идеей: оно предоставляет пароль для взломщиков, которые смотрят на список процессов в неподходящее время. Использованиеecho
не будет иметь этого дефекта, потому что это встроенная оболочка.