Як я можу призначити початковий / типовий пароль користувачеві в Linux?


10

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

userid created with password XYZ.
request to change the initial password.

Відповідно до документа вище, зашифрований пароль потрібно створити за допомогою Python та подати до usermodкоманди, як це:

 usermod -p "<encrypted-password>" <username>

Чи є інші простіші способи зробити це? Я не хочу завантажувати будь-яку спеціальну утиліту для цього; її слід максимально узагальнити.


Редагувати : Навіть метод, наведений у наведеному вище посиланні, для мене, здається, не працює:

bash-3.00# python
Python 2.4.6 (#1, Dec 13 2009, 23:43:51) [C] on sunos5
Type "help", "copyright", "credits" or "license" for more information.
>>> import crypt; print crypt.crypt("<password>","<salt>")
<sOMrcxm7pCPI
>>> ^D
bash-3.00# useradd -g other -p "sOMrcxm7pCPI" -G bin,sys -m -s /usr/bin/bash mukesh2
UX: useradd: ERROR: project sOMrcxm7pCPI does not exist.  Choose another.
UX: useradd: sOMrcxm7pCPI name should be all lower case or numeric.

ось ще одне посилання, яке я знайшов, але, мабуть, проблема безпеки є також із використанням параметра -p, usermodколи хтось psбачить процес, перераховуючи пароль, видно
munish

Відповіді:


13

Ви можете використовувати chpasswdце, як це:

echo "username:newpassword" | chpasswd

Ви можете скористатися chpasswdіншими програмами, ніж echo, якщо це зручно, але це зробить трюк.

Редагувати: Щоб створити пароль у скрипті оболонки, а потім встановити його, ви можете зробити щось подібне:

# Change username to the correct user:
USR=username
# This will generate a random, 8-character password:
PASS=`tr -dc A-Za-z0-9_ < /dev/urandom | head -c8`
# This will actually set the password:
echo "$USR:$PASS" | chpasswd

Для отримання додаткової інформації chpasswdдив. Http://linux.die.net/man/8/chpasswd

(Команда для створення пароля була з http://nixcraft.com/shell-scripting/13454-command-generate-random-password-string.html )


дякую @Dominick Хм, chpasswd, можливо, в AIX ... я його не використовував. і evrytime я повинен написати пароль ... вона не може бути згенерована з допомогою сценарію , як на заслання питань ... На жаль , навіть це не працює для мене
Munish

@munish Я не зовсім впевнений, що ти маєш на увазі під створенням сценарію, але я оновив свою відповідь, сподіваюся, бути кориснішою.
Домінік Пастор

Не працює. "Помилка маніпулювання токеном аутентифікації"
Черін

@Cerin За будь-якого випадку ви щось робите sudo echo "username:newpass" | chpasswd? Оскільки підвищені дозволи від sudoне проходять через трубу, то chpasswdце буде працювати як звичайний користувач. Це можна виправити переміщенням sudo, як у echo "username:newpass" | sudo chpasswd. Є й інші проблеми, які можуть спричинити це повідомлення про помилку, але помилки дозволів на зразок цього, мабуть, є найпоширенішими.
Домінік Пасторе

1
Паролі в командному рядку можуть бути видимими для інших зареєстрованих користувачів на тій же машині, використовуючи w, ps або інші команди, які показують інформацію про інші процеси. Поставлені таким чином паролі повинні бути змінені користувачем якнайшвидше.
Mnebuerquo

3

Ви можете використовувати OpenSSL для генерування випадкового пароля (16 символів у цьому випадку):

# 1000 bytes should be enough to give us 16 alphanumeric ones
p=$(openssl rand 1000 | strings | grep -io [[:alnum:]] | head -n 16 | tr -d '\n')

Потім подайте хешований пароль до useraddабоusermod

# omit the "-1" if you want traditional crypt()
usermod -p $(openssl passwd -1 "$p") <username>

Кредит, якщо належить: створення пароля адаптується за аналогічним методом, який використовується /dev/urandomзамість openssl.


2

useradd повинен працювати (я це робив на Ubuntu). Можливо, перевірте правильність кожної з ваших аргументів (існують групи, шлях правильний, щоб пробитися). Ви можете запустити команду просто паролем та користувачем, а потім скористатися userdel, щоб видалити, а потім спробувати ще більше параметрів, щоб побачити, що викликає проблему (груба сила підходу).

Також є нові користувачі (див. Головну сторінку), принаймні під Ubuntu, де ви надаєте йому файл з файлом passwd, як інформація, включаючи звичайні текстові паролі, і це створить цих користувачів. Хороший спосіб зробити багато користувачів одночасно.


+1 за згадування newusersкоманди для Ubuntu
Левон

1

найпростіший спосіб я знайшов:


PASSWD="mySeCr3t-default-pa55" 
echo ${PASSWD} | passwd --stdin username_here

Ви це навіть тестували? passwd: unrecognized option '--stdin'
Серін

Так, я використовував це багато разів, але, як і майже в будь-якій іншій команді, це не дефакто розв’язання проблеми, що знаходиться у вас. Деякі варіанти бінарного passwd, не підтримують перемикач --stdin.
Мельбурслан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.