WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

任意の文字数でランダムなパスワードを作成する

      2012/11/25

mkpasswdコマンドのインストール

mkpasswdコマンドを利用すると、手軽にセキュアなパスワードを作成することができます。
mkpasswdコマンドがまだインストールされていない場合は下記のコマンドでインストールすることができます。

[root@centos ~]#  yum -y install expect

mkpasswdコマンドの使い方

mkpasswdコマンドを実行すると任意の文字数でランダムなパスワードを生成することができます。

[root@centos ~]#  mkpasswd
IchHp24a*

-lオプションを付加すると、パスワードの長さを指定できます。
デフォルトでは9に設定されているようです。

[root@centos ~]#  mkpasswd -l 25    ※25文字のパスワードを作成
FktcqhxvylvMiu>6izwv9tqyq

-dオプションでは、パスワードに含める数字の数を指定できます。
デフォルトでは2に設定されているようです。

[root@centos ~]#  mkpasswd -d 3    ※パスワードに数字を3つ含むように指定する
1t%GX7cu4
[root@centos ~]#  mkpasswd -d 0    ※パスワードに数字を含まないように指定する
bDDozmyf<

-dオプションと同様に、-cオプションではパスワードに含めるアルファベットの小文字の文字数を、-Cオプションではパスワードに含めるアルファベットの大文字の文字数を指定できます。
デフォルトではそれぞれ2に設定されているようです。

[root@centos ~]#  mkpasswd -c 3    ※パスワードにアルファベットの小文字を3つ含むように指定する
ym9g]5jKI
[root@centos ~]#  mkpasswd -C 3    ※パスワードにアルファベットの大文字を3つ含むように指定する
[U6Wk8Dwi

-sオプションでは、パスワードに含める特殊記号の数を指定できます。
デフォルトでは1のようです。

[root@centos ~]#  mkpasswd -s 3    ※パスワードに特殊記号を3つ含めるように指定
hi0^?GM9*

また、オプションで指定した文字数に不整合があるとエラーが出てパスワードが作成できないので注意が必要です。
例えば下記コマンドでは、-lオプションでパスワード全体の長さを5文字に指定しているのにもかかわらず、-cオプションでパスワードにアルファベットの小文字を7つ含めるよう指定しています。
このように矛盾した文字数指定を行った場合はエラーとなります。

[root@centos ~]#  mkpasswd -l 5 -c 7
impossible to generate 5-character password with 2 numbers, 7 lowercase letters, 2 uppercase letters and 1 special characters.

また、-2オプションを付加するとパスワードが右手と左手で交互に入力される文字配列となります(※QWERTYキーボードの場合)。
両手でパスワードを入力することで、入力時に手元を見られてパスワードが盗まれる可能性が低くなり、セキュリティが向上するそうです。

 [root@centos ~]#  mkpasswd -2
uxm2Iv-F7

ユーザアカウントをオプションとして指定すると、アカウントのパスワードをmkpasswdで生成したパスワードに自動的に置き換えることができます。
例えばuser1のパスワードを変更したい場合は下記のようにオプションにユーザアカウントを指定してmkpasswdを実行します。

 [root@centos ~]#  mkpasswd user1
bi3pvBY1&

これでuser1のパスワードは"bi3pvBY1&"に変更されます。

 - Linux , ,