CentOSでランダムなパスワードを生成するには「mkpasswd」コマンドを使えばできるのだが、残念ながらデフォルトではインストールされていない。ただし、baseリポジトリにあるexpectというパッケージに含まれているので、何も考えずにyumコマンドでインストールすることができる。
■■ yum search expect の出力結果(該当部分のみ抜粋)
expect.i386 5.42.1-1 base
Matched from:
expect
Expect is a tcl application for automating and testing
interactive applications such as telnet, ftp, passwd, fsck,
rlogin, tip, etc. Expect makes it easy for a script to
control another program and interact with it.
■■ インストール
sh-3.00# yum install expect
■■ まずは使ってみる
sh-3.00$ mkpasswd
!3bWVyoy1
このように、パスワードに使えそうなランダムな文字列が出力された。
再度実行してみると・・・
sh-3.00$ mkpasswd
Sfv7@Mhv2
今度は違う文字列が出てきました。
■■ ちょっと応用
大文字小文字の有無や記号使用の有無、数字使用の有無や文字数の指定もできます。
以下は、「記号を使わない」「大文字は2文字」「数字は2文字」で「8文字で出力」をオプション指定したものです。
sh-3.00$ mkpasswd -s 0 -C 2 -d 2 -l 8
tdg07HHq
■■ もうちょっと応用
linuxには、大量にUNIXアカウントを作成するツールとして「newusers」コマンドがあります。
# newusers 【平文パスワードが記載されたパスワードファイル】
というように、newusersコマンドの引数にファイルを指定してやればユーザの大量登録ができますが、
ユーザ追加のたびに手打ちでパスワードをつけるのは骨です。そこで今回は、新しく「user01」という
ユーザを1名作成する場合を想定した例をあげましょう。
【user01のデータを作成】
# echo user01:`mkpasswd -s 0 -C 2 -d 2 -l 8`:501:501:User 01:/home/user01:/bin/bash > userdata.txt
【newusersコマンドでuser01を登録】
# newusers userdata.txt
【/etc/passwd を確認】
# grep ^user01 /etc/passwd
user01:x:501:501:User 01:/home/user01:/bin/bash
【できあがったパスワードを確認】
# cat userdata.txt
user01:Foj89Xea:501:501:User 01:/home/user01:/bin/bash
【user01でログインして確認】
login as: user01
user01@192.168.0.110's password:
Last login: Fri Jan 4 22:21:50 2008 from 192.168.0.101
-bash-3.00$ id
uid=501(user01) gid=501(user01) groups=501(user01)
以上でランダムなパスワードを用いたユーザ作成の手順は終了です。