Как установить пароли пользователей, используя 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

Вы должны использовать устаревание пароля и настроить пользователей таким образом, чтобы они меняли свой пароль при первом входе в систему. Смотрите эту статью .

waltinator
источник
Это были учетные записи только для 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, чтобы определить, где хранится пароль.

osexp2003
источник