AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 70404
Accepted
Michael Prescott
Michael Prescott
Asked: 2009-10-02 06:44:52 +0800 CST2009-10-02 06:44:52 +0800 CST 2009-10-02 06:44:52 +0800 CST

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

  • 772

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

类似:
sudo adduser username1 password primarygroup secondarygroup,ternarygroup "full name1"
sudo adduser username2 password primarygroup secondarygroup,ternarygroup "full name2"
sudo adduser username3 password primarygroup secondarygroup,ternarygroup "full name3"
sudo adduser username4 password primarygroup secondarygroup,ternarygroup "full name4 "
...
sudo adduser username999 密码 primarygroup secondarygroup,ternarygroup "full name999"

ubuntu
  • 6 6 个回答
  • 6644 Views

6 个回答

  • Voted
  1. Dennis Williamson
    2009-10-02T09:03:44+08:002009-10-02T09:03:44+08:00

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

    newusers userfile.txt
    

    但是,它不处理多个组。

    • 6
  2. Best Answer
    wfaulk
    2009-10-02T06:53:21+08:002009-10-02T06:53:21+08:00

    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 历史记录等),但没有一个特别安全。

    • 4
  3. Dan Carley
    2009-10-02T08:20:40+08:002009-10-02T08:20:40+08:00

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

    • 2
  4. MikeyB
    2009-10-02T07:32:21+08:002009-10-02T07:32:21+08:00

    由于是 ubuntu,语法略有不同。它可能与 debian 匹配:

    adduser --gecos "Real Name" --gid PRIMARYGROUP USERNAME
    usermod -G SECONDARYGROUP1,SECONDARYGROUP2 -p $(openssl passwd -1 -salt shaker "USERPASSWORD") USERNAME
    
    • 1
  5. Anonymous
    2009-10-02T09:02:56+08:002009-10-02T09:02:56+08:00

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

    • 0
  6. neoice
    2009-10-04T05:27:31+08:002009-10-04T05:27:31+08:00

    您可能希望将用户从 /etc/passwd 中抽象出来并使用 LDAP。作为额外的奖励,您将在多台机器上获得一致的用户。将此与 Puppet 结合使用,您可以轻松地在每台机器上同步您的 NSS/PAM 配置。

    • 0

相关问题

  • 无法通过 Ubuntu VPN 访问外部网络

  • ubuntu apt-get upgrade - 如何在 shell 中单击确定?

  • VirtualBox 上 Ubuntu 的访客优化技巧 [关闭]

  • 外部硬盘上的 virtualbox 虚拟硬盘驱动器(Vista 主机上的 ubuntu 客户机)

  • 如何在 Ubuntu 上挂载 LVM 分区?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve