如何通过脚本添加具有随机或无效密码的 Linux 用户

如何通过脚本添加具有随机或无效密码的 Linux 用户

我想通过脚本将用户添加到 Linux 系统,但我不想发明或关心密码。这应该自动完成。

目标是生成 ssh 密钥,此用户只需远程登录即可。或者,此用户将通过 sudo 用户使用sudo su - thatuser

我希望省去每次创建这样的用户时发明和输入安全密码的麻烦,并且可以通过脚本来执行此操作。

没有人能够以该用户的身份使用密码登录,因此我的想法是他获得一个很好的随机密码,但没人知道它。

我可以编写一个脚本来生成一些随机的东西,但也许有内置的东西?或者只是停用密码(这样就无法使用密码登录,但使用密钥进行 ssh 登录可以sudo su - thatuser正常工作。

编辑:已经有一些答案了,很好,但我仍然不确定该怎么做。脚本会是什么样子?

它的行为应类似于 adduser 并创建所有标准内容(如 std.home 目录、复制的骨架、同名的组)

编辑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不会设置密码(因此用户将无法通过密码登录)。请注意useraddadduser是两个不同的命令。

以下应该创建具有自己组的新用户,创建它的主目录(在默认位置,因为我们没有指定任何位置)并复制骨架文件。

useradd --create-home <user>

.ssh然后,您只需在其主目录中创建目录chmod即可0700(SSH 将需要这个以确保安全),并将用户公钥放入其中.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 中的密码字段中输入 *(如果您未设置密码,则会发生这种情况)。这将阻止用户登录。

相关内容