我刚刚熟悉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。