Запустите adduser не в интерактивном режиме

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 Подробности - Википедия

Надеюсь, это поможет вам.

Zoke
источник
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, которые могут генерировать хешированный пароль. Все это ваш хешированный пароль.

Sha-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"))'
ThorSummoner
источник
1
Опции, о которых вы упоминаете, не существуют adduserв моей (недавней) версии Ubuntu.
ᴠɪɴᴄᴇɴᴛ
1
@ distinct adduserотличается от useraddзапутанного, я знаю.
ThorSummoner
1
Упс, действительно упустил, что вы используете его почти тезку ... разве нет BDFL, защищающего пространство имен командной строки? ; р
ᴠɪɴᴄᴇɴᴛ
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