Я использую следующую команду для создания пользователя на 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
.