我需要能够在我的Linux (Fedora 10)上创建用户帐户,并通过bash脚本自动分配密码(如果需要,也可以采用其他方式)。
通过Bash创建用户很容易,例如:
[whoever@server ]# /usr/sbin/useradd newuser
是否可以在Bash中分配密码,功能类似于此,但自动:
[whoever@server ]# passwd newuser
Changing password for user testpass.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[whoever@server ]#
在Debian和Red Hat上都可以工作的解决方案。依赖于perl,使用sha-512散列:
cat userpassadd
#!/usr/bin/env bash
salt=$(cat /dev/urandom | tr -dc A-Za-z0-9/_- | head -c16)
useradd -p $(perl -e "print crypt('$2', '\$6\$' . '$salt' . '\$')") $1
用法:
userpassadd jim jimslongpassword
它可以有效地作为一行程序使用,但你必须自己在正确的地方指定密码、盐和用户名:
useradd -p $(perl -e "print crypt('pass', '\$6\$$salt\$')") username
来自IBM (https://www.ibm.com/support/knowledgecenter/ssw_aix_61/com.ibm.aix.cmds1/chpasswd.htm):)
创建一个文本文件,输入text.txt,并按如下方式填充用户:密码对:
user1:password1
user2:password2
...
usern:passwordn
保存“text.txt”文件并运行
cat text.txt | chpassword
就是这样。该解决方案是(a)可伸缩的,(b)不需要在命令行上打印密码。