[小ネタ][bash]シェルスクリプトでユーザーを一撃作成する


どうもこんばんは。 @nullpopopo です。またおっさんになってしまいました。以下の要件でLinuxのローカルユーザーを作成したくなったので、シェルスクリプト一撃でできるようにしてみました。

  1. OSインストール直後の真っさらな状態(root以外にログインできるユーザーはいない)
  2. UID GIDともに1000番から連番で作成。ただし、GIDは1000番固定。
  3. グループ名は「webmaster」
  4. パスワードはランダムな8文字で、 /root 直下にパスワードのメモを残しておく(もちろん後で消す)

ユーザー名は配列「USERS」の中にベタ書きしています。GIDの開始番号やグループ名は変数をよしなに編集してください。

まずはソースコードから。

最初にできるユーザー(配列「USERS」に格納した先頭のユーザー)のUIDとGIDが同じになるように、かつ以降に作成されるユーザーのUIDのみを1つずつカウントアップさせるウマい方法はないものか、と思案していたのですが、ユーザー作成処理で cat -n している(1から数えられる)ことを逆手にとって、最初の変数でワザとUIDから1引いた数を自動的に変数「START_UID」へ格納するようにしています。

ユーザー作成をbashのfor文で回さずにawkを使っているのは、私自身のawk力を上げたい、というそれだけの理由でawkの四則計算を使っていますw

しかし、これでは最初にグループを作成するときに不都合なので、groupaddするときにまた1を足して元に戻しているという、バッドノウハウ of バッドノウハウっぷり・・・。これ、自分1人でメンテするならまだしも、人にメンテナンスしてもらうには不親切なコードですね・・・。

それではコマンド実行結果を見てみましょう。

以上、小ネタでした。。。