Я пишу сценарий для добавления большого количества пользователей к системе. Часть этого включает устанавливающие пароли по умолчанию для каждого пользователя. Как может я пароли пользователей аппарата без него предлагающий мне пароль впереди?
К сожалению, passwd, кажется, не берет аргумент, указывая новый пароль для установки. Я использую Ubuntu 11.10.
Попробуйте usermod:
usermod --password PASSWORD USERNAME
Единственное, для этого нужна предварительно зашифрованная строка пароля, которую вам нужно будет сначала сгенерировать.
Вы должны использовать устаревание пароля и настроить пользователей так, чтобы они меняли свой пароль при первом входе в систему. См. Эту статью .
Вы должны посмотреть на команду chpasswd
(если она доступна в вашем linux flavor):
echo 'userid:newpasswd' | chpasswd
Или вы можете создать файл userid:passwd для каждой учетной записи в отдельной строке.
Вот и все.
Вдохновленный идеей Эрика Смита, сочетание openssl passwd
и usermod -p
сработало. Сгенерировать хэшированное значение пароля вместе со значением соли.
$ openssl passwd -1 -salt 5RPVAd clear-text-passwd43
$1$5RPVAd$vgsoSANybLDepv2ETcUH7.
Затем скопировать зашифрованную строку в usermod. Убедитесь, что она обернута одинарной кавычкой.
$ usermod -p '$1$5RPVAd$vgsoSANybLDepv2ETcUH7.' root
Проверьте в теневом файле.
$ grep root /etc/shadow
root:$1$5RPVAd$vgsoSANybLDepv2ETcUH7.:17774:0:99999:7:::
Вот хорошее решение, всего одна строка:
useradd -p $(openssl passwd -1 "$pass") "$user"
Я могу добавить другие параметры, например -m, чтобы создать домашний каталог и т. Д.
(echo user; echo password) | passwd
у меня работает как на физическом хосте, так и в контейнере, для различных ОС (ubuntu xenial, bionic, debian9,10, centos75,76, coreos)
echo user:password | chpasswd
работает для некоторых ОС, но в некоторых ОС, таких как debian9,10, будет отображаться ошибка не удается подключиться к / var / run / nscd / socket
поскольку он использует /etc/nsswitch.conf для определения места хранения пароля.