ランダムなパスワードを生成 - mkpasswdの謎

Debianではデフォルトで入っているmkpasswd(/usr/bin/mkpasswd)は、下記JMのMANページで検索出来るmkpasswd(8)とはどうも違う。
JM Home Page - MKPASSWD

ランダムなパスワードを生成してくれるのだけど、以下のような動作になる。

# mkpasswd
Password:
rB91Ur7xT3tUM
#

実行するとパスワードの入力を促されるが、そのままリターンするとランダムなパスワードを返してくれる。
生成されるパスワードの条件をもう少し制御したい。ということで、昔、Red HatだとmkpasswdというPerlスクリプトがあったなあというのを思い出し、Debianでも探してみた。

# apt-cache search mkpasswd
libstring-mkpasswd-perl - random password generator
whois - the GNU whois client
#

あった。ということで、早速インストール。

# apt-get install libstring-mkpasswd-perl

ヘルプを表示してみる。

# mkpasswd.pl --help
Usage: mkpasswd.pl [-options]
    -l # | --length=#   length of password (default = 9)
    -d # | --digits=#   min # of digits (default = 2)
    -c # | --lower=#    min # of lowercase chars (default = 2)
    -C # | --upper=#    min # of uppercase chars (default = 2)
    -s # | --special=#  min # of special chars (default = 1)
    -2 | --distribute   alternate hands
        --nodigits          alias for --digits=0
        --nolower           alias for --lower=0
        --noupper           alias for --upper=0
        --nospecial         alias for --upper=0
#

デフォルトでは、大文字・小文字・特殊記号が混在して9文字でパスワードを生成してくれる(大文字・小文字・特殊記号はそれぞれ2文字含まれるようになっている)。

# mkpasswd.pl
zV9sf2+Qr
#

大文字・小文字のみ、特殊記号なし、8文字のパスワードを作ってみる。

# mkpasswd.pl --nospecial -l 8
saH8Mn9l
#

/usr/bin/mkpasswdの方は、時間を見つけて再調査。