Як встановити паролі користувачів за допомогою passwd без запиту?


21

Я пишу сценарій, щоб додати велику кількість користувачів до системи. Частина цього включає встановлення паролів за замовчуванням для кожного користувача. Як я можу встановити паролі користувачів, не вказуючи мене на введення пароля вперед?

На жаль, passwd, схоже, не бере аргумент, вказуючи новий пароль. Я використовую Ubuntu 11.10.

Відповіді:


22

Спробуйте usermod:

usermod --password PASSWORD USERNAME

Єдине, що для цього потрібен попередньо зашифрований рядок пароля, який ви повинні створити спочатку.


1
... яку я можу генерувати за допомогою mkpasswd. Відмінно, дякую!
Джейк Петрулес

16
Ви також можете використовувати openssl для створення зашифрованого пароля. Наприклад:usermod --password $(echo my_new_password | openssl passwd -1 -stdin) USERNAME
Ерік Сміт

1
Три роки пізно. Я не міг дати відповідь @EricSmith, але я виявив більш просту версію команди, яка працювала:usermod --password $(openssl passwd -1 {password}) {username}
BoCoKeith

13

Слід переглянути chpasswdкоманду (якщо вона доступна у вашому смаку Linux):

echo 'userid:newpasswd' | chpasswd

Або ви можете ввести файл з лістингу userid: passwd для кожного облікового запису в окремому рядку.

Це воно.


це працювало для мене вDockerfile
Вишранте

1

Натхненний ідеєю Еріка Сміта, поєднання 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:::

0

Ви повинні використовувати старіння паролів та встановити користувачів таким чином, що вони повинні змінити свій пароль під час першого входу. Дивіться цю статтю .


Вони мали бути лише обліковими записами FTP, але гарними порадами. ;)
Джейк Петрулес

0
(echo user; echo password) | passwd

працює для мене як у фізичному хості, так і в контейнері, для різних ОС (ubuntu xenial, bionic, debian9,10, centos75,76, coreos)

echo user:password | chpasswd

працює для деяких ОС, але деякі ОС, такі як debian9,10, покажуть помилку, can not connect to /var/run/nscd/socketоскільки вона використовує /etc/nsswitch.conf для визначення місця зберігання пароля.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.