如何从命令行快速向 Ubuntu 服务器添加大量用户?

如何从命令行快速向 Ubuntu 服务器添加大量用户?

我刚刚熟悉 adduser 的基本用法。我想消除交互/提示因为我经常要重建这台机器,所以我想编写这个过程的脚本,或者至少最差只需复制并粘贴一个完整的语句,将用户添加到正确的组并在一个命令中设置密码。

类似于:
sudo adduser 用户名1 密码 primarygroup secondarygroup,ternarygroup“全名1”
sudo adduser 用户名2 密码 primarygroup secondarygroup,ternarygroup“全名2”
sudo adduser 用户名3 密码 primarygroup secondarygroup,ternarygroup“全名3”
sudo adduser 用户名4 密码 primarygroup secondarygroup,ternarygroup“全名4”
...
sudo adduser 用户名999 密码 primarygroup secondarygroup,ternarygroup“全名999”

答案1

man adduser在 shell 提示符下输入“ ”。它将为您提供有关如何使用 的文档adduser。一般来说,man将为您提供有关任何 CLI 命令的文档。

但您真正想使用的useradd不是adduser

简而言之:

useradd -c "Real Name" -m -g primarygroup -G secondarygroup1,secondarygroup2 username

哦,如果你想同时设置密码,你必须预先加密。我不断重写这个小程序来做 Unix 标准的盐加密:

#include <stdio.h>
#include <unistd.h>

int main(int argc, char *argv[]) {

        char *salt;

        if (argc < 2 || argc > 3) {
                fprintf(stderr, "Usage: %s string [salt]\n", argv[0]);
                exit(1);
        } else {
                if ( argc == 2 ) {
                        salt = argv[1];
                } else {
                        salt = argv[2];
                }
                printf("%s\n", crypt(argv[1], salt));
                exit(0);
        }
}

将其编译为后crypt,您可以添加选项:

-p `crypt password`

理想情况下,您永远不想在命令行中输入密码,因为它可以出现在多个地方(ps 输出、shell 历史记录等),而这些地方都不是特别安全的。

答案2

您可以创建一个包含用户名列表等的文件,然后使用该newusers命令。它希望文件看起来像这样的格式/etc/passwd,但有一些例外,其中之一是密码是纯文本(newusers对其进行加密)。

newusers userfile.txt

但它不能处理多个组。

答案3

如果你需要添加那么多用户,并且不断重建机器,那么可能需要使用木偶。这本身就是一个相当简单的配方,您可以从那里扩展以涵盖其他任务。

答案4

您可以使用 autoexpect 记录 adduser 的交互式会话,然后创建一个模板,在其中替换用户名等。

相关内容