我怎么能从命令行快速地将大量用户添加到Ubuntu服务器?

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

就像是:
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密码primarygroup secondarygroup,ternarygroup“全名4”

sudo adduser username999 password primarygroup secondarygroup,ternarygroup“full name999”

在shell提示下键入“ man adduser ”。 它会给你如何使用adduser文档。 一般来说, man会给你任何CLI命令的文档。

但是你真的想用useradd而不是adduser

简而言之:

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

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

 #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历史logging等等),但是没有一个是特别安全的。

您可以创build一个包含用户名列表等的文件,并使用newusers命令。 除了几个例外,它想要文件看起来像/etc/passwd的格式,一个是密码是纯文本( newusersencryption它)。

 newusers userfile.txt 

但它不处理多个组。

如果你需要添加这么多的用户,并不断重build机器,那么它可能保证使用Puppet 。 这本身就是一个相当简单的配方,您可以从这里扩展到其他任务。

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

 adduser --gecos "Real Name" --gid PRIMARYGROUP USERNAME usermod -G SECONDARYGROUP1,SECONDARYGROUP2 -p $(openssl passwd -1 -salt shaker "USERPASSWORD") USERNAME 

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

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