昔作ったこんなシェル
昔作ったシェルスクリプトを晒してみようシリーズ(*1)。今回はGNU/Linuxのユーザとグループをお手軽管理するシェルスクリプトです!
はい、これがそれですね。
使い方はこんな感じです!
- 上記のシェルスクリプトを「usrgrp_add.sh」みたいな適当な名前で適当な場所に保存する
- シェルスクリプトと同じディレクトリに「user.list」と「group.list」という名前で空ファイルを作成する
- 「user.list」と「group.list」の中身をフォーマットに合わせてご希望に沿うように編集する
- root権限で「usrgrp_add.sh」を実行する
- あら不思議!簡単にユーザとグループが!
「user.list」のフォーマットは下記のような感じ。「uid」、「ユーザ名」、「グループ名」の順番。1行1ユーザで記述するイメージ。
501:foo:group1 502:bar:group2 503:baz:group2
「group.list」のフォーマットは下記のような感じ。「gid」、「グループ名」の順番。1行1グループで記述するイメージ。
501:group1 502:group2
内部的には各ファイルの内容を順に読み取りながら各要素毎に分解し、「useradd」や「groupadd」コマンドを使ってユーザとグループを作成している……ってだけのシンプルな作り。一応、「/etc/passwd」と「/etc/group」の中身をチェックしてすでに存在しているユーザやグループが定義されている場合はスキップするようにもなっている(*2)。
もっと良い書き方はあるし、ユーザやグループの追加しかできないものなんだけども。それなりに使いやすい場面もあるかなぁと勝手に思っているのです。はい。
これら3ファイル(*3)をSVNやGitでバージョン管理下において、サーバ構築時に必ず and/or 共通で作るユーザ/グループはコイツで管理/作成する……って手順を組みたい時によく使ってます。はい。
まあ、なにかのサンプルとしても使えると思うので、晒しておきますね〜。
*1:手元にシェルスクリプトの在庫が残っている限り連載します(キリッ
*2:元々はChefとかがメジャーになる前に作ったものだけど、ある程度は冪等制を意識した作りにしてあるのだ(ドヤァ
*3:「usrgrp_add.sh」と「user.list」と「group.list」の3つね