Назад | Перейти на главную страницу

Как добавить пользователя, не зная зашифрованного пароля?

Я использую следующую команду для создания пользователя на Linux-машине:

useradd -d /home/dummy -g idiots -m -p 12345689 dummy

Создан пользователь и домашний каталог.
Проблема в том, что я не могу войти в систему, используя эту учетную запись, так как -p ожидает зашифрованный пароль, возвращенный crypto.

Вопрос: Я хочу создать пользователя с помощью сценария bash и не знаю зашифрованного пароля crypto. Как мне это сделать, чтобы я мог автоматически создать этого пользователя с помощью скрипта и решить проблему с паролем?

Вы можете использовать openssl для генерации предварительно зашифрованных строк паролей для использования с параметром -p для useradd

echo "P4sSw0rD" | openssl passwd -1 -stdin

$1$Jxmpx1Da$Y8MzBctIyDW8/7pFPbNWD1

В -1 говорит, что нужно сгенерировать хэш пароля MD5. Соль создается автоматически.

Затем вы можете использовать

useradd -d /home/dummy -g idiots -m -p $(echo "P4sSw0rD" | openssl passwd -1 -stdin) dummy

добавить пользователя. Чтобы сделать это в интерактивном режиме, скрывая пароль

useradd -d /home/dummy -g idiots -m -p $(read -sp Password: pw ; echo $pw | openssl passwd -1 -stdin) dummy

Вот как я это делаю:

# cat user-pw_list
john:p455W0rD
geany:p455W0rD


# cat CreateUsers.sh
#!/bin/bash
#
# filename: CreateUsers.sh
# usage: cat "User:passwd" | $0
#
set -e
# set -x
while read ; do
  USER=${REPLY%%:*}
  PWD=${REPLY##*:}
  # alternative for random passwd, where $RANDOM is a bash function
  #PWD=${REPLY%%:*}$RANDOM$RANDOM

  echo -e "adding User $USER "
  # for disabled users: /usr/sbin/nologin, otherwise /bin/bash
  /usr/sbin/useradd -c automaticUser -m -k/dev/null -s /usr/sbin/nologin $USER
  echo "$USER:$PWD" | chpasswd --md5 $USER

  ## also add user to samba:
  #echo -e "$PWD\n$PWD" | pdbedit -t -u $USER
done

По-видимому, ты можешь использовать

echo "password" | passwd dummy --stdin

Я никогда этого не пробовал.

В качестве альтернативы вы можете поместить открытый ключ пользователя в /home/dummy/.ssh/authorized_keys и совсем забудьте о паролях. Это лучший вариант с точки зрения безопасности.

Поскольку вы собираетесь использовать сценарий bash, возможно, старый добрый newusers команда была бы вам полезна? Он считывает свой ввод из текстового файла, отформатированного следующим образом:

pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell

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

Для получения дополнительной информации см. man newusers.