我需要将一组用户添加到新系统中,作为准备服务器的 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