Запускайте аддусер неінтерактивно


198

Я хотів би скористатися adduserкомандою, щоб додати користувача (із вимкненим паролем) через скрипт оболонки.

За замовчуванням adduserзапрошує різні значення (наприклад, повне ім’я). Чи є спосіб подати ці значення за допомогою командного рядка? Або мені потрібно буде useraddзамість цього?

Відповіді:


262

Скористайтеся --gecosопцією, щоб пропустити chfnінтерактивну частину.

adduser --disabled-password --gecos "" username

Це все на сторінці людини. Не найочевидніша рецептура тхо.

--gecos GECOS
          Set  the  gecos field for the new entry generated.  adduser will
          not ask for finger information if this option is given.

Поле GECOS є списком, розділеним комами, як таке: Full name,Room number,Work phone,Home phoneнезважаючи на те, що на цій сторінці вказані finger information деталі - Вікіпедія

Сподіваюся, це вам допоможе.


41

useradd може також додавати користувачів, але, схоже, немає вбудованої форми запиту.

useradd -m -p <encryptedPassword> -s /bin/bash <user>
  • -m, --create-home: Створити домашній каталог користувача
  • -p, --password: Вкажіть пароль користувача; пропустіть, щоб його відключити
  • -s, --shell: Оболонка за замовчуванням для користувача входу

    Blank буде використовувати оболонку входу за замовчуванням, вказану SHELLзмінною в/etc/default/useradd

  • Заміна <user>з ім'ям для входу
  • Підставами <encryptedPassword>з зашифрованим паролем

Генерування хешованих паролів:

Існує багато реалізацій crypt3, які можуть генерувати хешований пароль. Вся справа у вашому хешированном паролі.

На основі Ша-512

Отриманий формат виводу: хеш-механізм ( $6для sha-512), випадкова сіль (вісім байтів після другого знаку долара $ASDF1234), решта - корисне навантаження.

  • mkpasswd mkpasswd -m sha-512

    ( mkpasswdнадається whoisпакетом)

На основі DES:

Отриманий формат виводу: перші 2 байти - це ваша сіль, решта - корисна навантаження. Вся справа у вашому хешированном паролі.

  • mkpasswd: mkpasswd(надається whoisпакетом)
  • openssl: openssl passwd -crypt
  • perl: perl -e "print crypt('password');"
  • пітон: python3 -c 'import crypt; print(crypt.crypt("password"))'

1
Параметри, про які ви згадуєте, не існують для adduserмоєї (останньої) версії Ubuntu.
ᴠɪɴᴄᴇɴᴛ

1
@ ᴠɪɴᴄᴇɴᴛ adduserвідрізняється від того useradd, що я знаю, що плутає.
ThorSummoner

1
На жаль, дійсно пропустили, що ви використовуєте його майже тезку ... чи не існує BDFL, що захищає простір імен командного рядка? ; p
ᴠɪɴᴄᴇɴᴛ

1
@ Mum007 Це тільки загальні поради, спробуйте додати -vабо -vvабо -vvvдо вашої SSH команди , щоб побачити , що не так і пошук повідомлень про помилки тут на SO або Google.
ThorSummoner

1
@KovacsAkos спробуйте це: sudo sed -i"" -e "s/PasswordAuthentication no/PasswordAuthentication yes/" /etc/ssh/sshd_configіsudo service ssh restart
JSBach
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.