我应该如何以非交互方式添加用户?

我应该如何以非交互方式添加用户?

我需要将一组用户添加到新系统中,作为准备服务器的 BASH 脚本的一部分。如何以非交互方式添加用户、创建其主目录、设置组并输入默认密码?

例如,如果我需要添加以下用户,我该怎么做?

user: node
password: spoon
group: ultraMegaPermissions

user:serve
password: spoot
group: sortaNotMega

user:watcher
password: spoogle
group: notMega

答案1

这是一个老问题,但好奇,其他人可以考虑该命令newusers。它存在于我使用的 RHEL5.5 系统和 Ubuntu 12.04 系统上,因此我猜测它会在大多数发行版的存储库中提供。

man newusers

newusers 命令读取用户名和明文密码对的文件,并使用此信息更新一组现有用户或创建新用户。每行的格式与标准密码文件相同(请参阅 passwd(5)),例外情况如下所述

答案2

useradd至少在 Linux 上使用。

使用crypt(3)生成加密密码,然后对每个密码执行以下操作:

useradd -m -g [group] -p [crypt output] [user]

-m创建一个主目录。-g设置用户的初始登录组。-p设置返回的加密密码crypt(3)(您应该注意,此选项可能不合适,因为在创建用户时列出进程的用户将可以看到加密密码)。

您可能也想使用其他选项(至少是猜测-s),请阅读man 8 useradd这些选项。

答案3

如果需要手动输入用户密码:

echo -n "Enter $MY_USER password: "
read -sa MY_PASS
echo ${MY_USER}:${MY_PASS}::::/home/${MY_USER}:${DEFAULT_SHELL} | newusers

如果您需要完全非交互式的,只需使用明文密码($MY_PASS)运行最后一个命令,这通常不是一个好主意

答案4

如果服务器上不存在 newuser 命令。

您可以使用 passwd 命令的帮助。

 echo "new_passwd" | passwd  --stdin new_user

相关内容