Как добавить пользователя Linux со случайным или недействительным паролем из скрипта

Как добавить пользователя Linux со случайным или недействительным паролем из скрипта

Я хочу добавить пользователя в систему Linux из скрипта, но не хочу придумывать пароль или беспокоиться о нем. Это должно быть сделано автоматически.

Цель состоит в том, чтобы сгенерировать ssh-ключи, и этому пользователю нужно только войти удаленно. Или же этот пользователь будет использоваться из пользователя sudo через sudo su - thatuser.

Я хочу избавить себя от необходимости придумывать и вводить какой-нибудь надежный пароль каждый раз, когда создаю такого пользователя, и сделать это с помощью скриптов.

Никто не должен иметь возможности войти в систему с паролем этого пользователя, поэтому я думаю, что он получает хороший случайный пароль, но никто его не знает.

Я мог бы написать скрипт, который генерирует что-то случайное, но, может быть, есть что-то встроенное? Или просто деактивировать пароль (чтобы вход по паролю был невозможен, но вход по ssh с ключами работал sudo su - thatuserнормально).

Редактировать:Уже есть некоторые ответы, здорово, но я все еще не уверен, как это сделать. Как будет выглядеть сценарий?

Он должен вести себя как adduser и создавать все стандартно (типа стандартного домашнего каталога, скопированного скелета, группы с тем же именем)

Редактировать2:В конце концов, с вашей помощью я нашел решение, которое работает, и хочу им поделиться. Это скрипт, который я называю "adduser-nopasswd" и помещаю его в /usr/local/sbin (это хорошее место?), и он может быть выполнен только пользователем root. Он принимает один аргумент, который является именем новой группы и пользователя одновременно:

#!/bin/sh -e
# the -e makes the script exit immediateley if one command fails
NAME=$1
groupadd $NAME
useradd --create-home -d /home/$NAME --shell /bin/bash -g $NAME $NAME

Есть ли какие-нибудь комментарии по этой функции?

решение1

Если вы не укажете пароль, useraddон не будет установлен (и пользователь, таким образом, не сможет войти в систему с помощью пароля). Обратите внимание, что useraddи adduser— это две разные команды.

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

useradd --create-home <user>

Затем вы просто создаете каталог .sshв его домашнем каталоге (SSH этого chmodтребует 0700в целях безопасности) и помещаете в него открытый ключ пользователя .ssh/authorized_keys(пара закрытый/открытый ключ должна быть сгенерирована самим пользователем на его/ее компьютере).

Если вы хотите отключить пароль уже существующей учетной записи, вы можете воспользоваться следующим способом.

usermod --lock <user>

решение2

Утилита /usr/sbin/useradd всегда создавала для меня пользователей, не требуя паролей. Я написал много скриптов, которые брали /etc/passwd другой системы и создавали для меня пользователей.

Кроме того, если вы посмотрите документацию по mercurial-server, вы увидите, как настроить множество ключей SSH (клиентов) для запуска программ от имени всего одного пользователя на стороне сервера.

решение3

# 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

Хорошо, давайте добавим наших пользователей:

cat user-pw_list | ./CreateUsers.sh

решение4

Поставьте * в поле пароля в /etc/shadow (это должно произойти, если вы не установили пароль). Это не позволит пользователю войти в систему.

Связанный контент