Linux/UNIX 使用mkpasswd/makepasswd/pwgen生成随机密码

时间:2019-11-20 08:54:09  来源:igfitidea点击:

在信息系统管理中,有时候我们需要给申请用户设置一个随机密码,应该如何实现?
在shell脚本中如何生成随机密码?
在Linux或Unix中如何创建随机密码?

安装makepasswd

在Debian/Ubuntu Linux上安装mkpasswd或makepasswd:

$ sudo apt-get install makepasswd

mkpasswd语法

语法为:

makepasswd
makepasswd [options]

mkpasswd示例

只需执行以下命令:

$ makepasswd

输出示例:

m4peQm97s

要生成长度为16个字符的密码,将16传递给--chars选项,如下所示:

$ makepasswd --chars 16

输出示例:

cSYhQ55aNRshmBT5

生成5个密码:

$ makepasswd --chars 16 --count 5

输出示例:

W6Lfrus9m08uAL7j
gdTiP2F4Td94oyWN
qoeezVzHh38m1aYK
HI0R66ExHw558L2N
5I6UH7WdUmX9e3Xg

其他命令行选项如下:

--crypt          Produce encrypted passwords.
--crypt-md5      Produce encrypted passwords using the MD5 digest (hash)
                       algorithm.
--cryptsalt=N    Use crypt() salt N, a positive number

mkpasswd命令语法

在大多数Linux发行版中,默认情况下已安装mkpasswd。

语法如下:

mkpasswd
mkpasswd [options]
mkpasswd [options] [user]

mkpasswd命令示例

只需执行mkpasswd命令:

$ mkpasswd

输出示例:

Password: type-Your-Password
/o88/D4SvLix2

设置密码长度:

$ mkpasswd -l 12

将密码存储在shell变量中:

RPASS=$(mkpasswd -l 12)
echo "$RPASS"

mkpasswd命令其他选项

-d #      (min # of digits, default = 2)
-c #      (min # of lowercase chars, default = 2)
-C #      (min # of uppercase chars, default = 2)
-s #      (min # of special chars, default = 1)

创建一个包含24个字符的密码,至少包含3位数字,3个字符和5个大写字符:

$ mkpasswd -l 22 -d 3 -C 5 -s 3

安装pwgen命令

还可以安装并使用pwgen命令来自动生成密码。

在RHEL/CentOS/Fedora Linux上安装pwgen,使用yum命令,如下所示:

# yum -y install pwgen

在Debian/Ubuntu Linux上安装pwgen,使用apt-get命令,如下所示:

$ sudo apt-get install pwgen

pwgen命令语法和示例

语法为:

pwgen
pwgen -N 1
pwgen [options]

生成随机密码:

$ pwgen

只生成一个密码:

$ pwgen -N 1

生成一个长度为20个字符的密码:

$ pwgen 20 1

pwgen命令支持的选项:

-c or --capitalize
	Include at least one capital letter in the password
  -A or --no-capitalize
	Don't include capital letters in the password
  -n or --numerals
	Include at least one number in the password
  -0 or --no-numerals
	Don't include numbers in the password
  -y or --symbols
	Include at least one special symbol in the password
  -s or --secure
	Generate completely random passwords
  -B or --ambiguous
	Don't include ambiguous characters in the password
  -h or --help
	Print a help message
  -H or --sha1=path/to/file[#seed]
	Use sha1 hash of given file as a (not so) random generator
  -C
	Print the generated passwords in columns
  -1
	Don't print the generated passwords in columns
  -v or --no-vowels
	Do not use any vowels so as to avoid accidental nasty words