新規ユーザー登録用のスクリプト

仕事で運用しているLinuxサーバーに新規ユーザーを登録するスクリプトを改造した。
面倒だったのがパスワードの自動生成と登録。
元々自動でパスワードを生成するために単独で動作するプログラムを10年以上前にC言語で書いてあった。
中身の詳細は公開できないけど、要はcrypt関数を使ってランダム文字列を得るもの。
ところがベース文字列は登録時に指定するものの、暗号化キーはランダムにならなかったので、同じ引数を指定すると同じ文字列を返してしまう。
これでは少々まずいので、今回は暗号化キー(のもとになる文字列)を下のようにして作成することにした。
key=`/usr/bin/openssl rand -base64 10`
上のコマンドで生成されたランダムな文字列($key)を元に暗号化キーを作ってcrypt関数に渡して暗号化した文字列の一部を必要があれば書き換えるようにプログラムを修正し、得られた文字列をパスワードとして採用するようにスクリプトを書き換えた。
こうすることで同じ引数を渡しても異なる文字列(パスワード)を得ることが出来るようになった。
また、スクリプト中でuseaddコマンドでユーザーを登録する際に戻り値($?)が0以外(登録失敗)の場合はパスワードの変更を行わないようにもした。
基本的にシステム管理者以外は使わない(スーパーユーザー権限が必要なため)スクリプトだけど、万が一既存のユーザーと同じユーザー名を指定した場合にパスワードが変更されると困るので、判定を入れた。

ランダム文字列の生成をどうやるか検討し始めた時はdateコマンドでナノ秒単位の時刻を取得して使うことを考えたけど、いろいろ調べている内にopensslコマンドを使う方が数字だけでなく文字が入って良さそうだったので上記のようになった。
ナノ秒単位での時刻取得は
#date +%N
で行うつもりだった。

←クリックしてくれると嬉しいです。
【広告】

コメントを残す