パスワード設定のちょいネタ
今日はパスワード設定のちょいネタで。
その1:mkpasswdを使ってランダムなパスワードを生成する
パスワードを考えるのは結構面倒なものです。
mkpasswdを使うとあまり考えずにパスワードを生成できます。
もしmkpasswdがいなければ、expectパッケージをインストール。
以下オプション。
-l オプションでパスワード長(デフォルト9文字)
-d オプションでパスワードに含まれる数字の数(デフォルト2文字)
-s オプションでパスワードに含まれる記号の数(デフォルト1文字)
-c オプションでパスワードに含まれるアルファベット小文字の数(デフォルト2文字)
-C オプションでパスワードに含まれるアルファベット大文字の数(デフォルト2文字)
※詳細は man mkpasswdで。
その2:シェルスクリプトからpasswdを使ってパスワードを設定する
passwd コマンドに --stdin オプションを付けると標準入力を読み込めるので、
パイプを使ってパスワードを設定することもできます。
こんな感じに。
# echo "test" | passwd --stdin testuser Changing password for user testuser. passwd: all authentication tokens updated successfully.
これを使えばシェルスクリプトからでもOK。
おまけ:ユーザーをまとめて作成するスクリプトを書いてみる
上のTIPS使って、ランダムな初期パスワード設定しながら
まとめてユーザーを作成するスクリプトを書いてみました。
「user_list.txt」に作成したいユーザーの情報を設定。
左から順にユーザー名,uid,gid,ホームディレクトリ,シェル。
こんな感じ。
user1,2000,2000,/home/user1,/bin/bash user2,2001,2001,/home/user2,/bin/bash user3,2002,2002,/home/user3,/bin/bash user4,2003,2003,/home/user4,/bin/bash user5,2004,2004,/home/user5,/bin/bash
で、スクリプトの本体です。
パスワード長を8文字、記号なし、後はデフォルトのルールでパスワードを自動生成。
#!/bin/sh USER_LIST="/home/hogehoge/user_list.txt" USER_PASS="/home/hogehoge/user_pass.txt" MKPASSWD="mkpasswd -l 8 -s 0" while read LINE do USER_NAME=`echo ${LINE} | cut -d, -f 1` USER_UID=`echo ${LINE} | cut -d, -f 2` USER_GID=`echo ${LINE} | cut -d, -f 3` USER_HOME=`echo ${LINE} | cut -d, -f 4` USER_SHELL=`echo ${LINE} | cut -d, -f 5` FIRST_PASS=`${MKPASSWD}` groupadd -g ${USER_GID} ${USER_NAME} useradd -u ${USER_UID} -g ${USER_GID} -d ${USER_HOME} -s ${USER_SHELL} ${USER_NAME} echo "${FIRST_PASS}" | passwd --stdin ${USER_NAME} echo "${USER_NAME},${FIRST_PASS}" >> ${USER_PASS} done < ${USER_LIST}
実行すると、「user_pass.txt」に設定したパスワードをユーザー名と共に出力。
左から順にユーザー名,パスワード。
こんな感じ。
user1,76lJNzin user2,9xq9PFpl user3,3vaiNTi4 user4,4uUIllf5 user5,isqYF42c
パスワードの一覧をファイルにしちゃってるのと、
実はエラー処理が全然ないのはご愛敬。
まだまだ改良する余地あるから、気が向いたら直すかも。
今日はこんなところで。