はじめに
Linuxでグループを作成・管理する際、複数のコマンドを実行する必要があり、少し手間がかかります。そこで、基本的なグループ管理操作をシンプルに行えるスクリプトを作成しました。
スクリプトの概要
このスクリプトは以下の3つの基本的な機能を提供します:
- グループの作成とユーザー追加
- グループの削除
- グループメンバーの一覧表示
スクリプトの内容
group-management.sh
#!/bin/bash
# 使用方法を表示
usage() {
echo "使用方法:"
echo " $0 create <group> <user> # グループ作成とユーザー追加"
echo " $0 delete <group> # グループ削除"
echo " $0 list <group> # グループメンバー表示"
exit 1
}
# 引数チェック
[ $# -lt 2 ] && usage
# コマンドと引数の取得
cmd=$1
group=$2
user=$3
case "$cmd" in
"create")
# グループ作成とユーザー追加
[ -z "$user" ] && echo "エラー: ユーザーを指定してください" && exit 1
if ! grep -q "^$group:" /etc/group; then
sudo groupadd "$group"
echo "グループ '$group' を作成しました"
fi
if id "$user" &>/dev/null; then
sudo usermod -a -G "$group" "$user"
echo "ユーザー '$user' をグループ '$group' に追加しました"
getent group "$group"
else
echo "エラー: ユーザー '$user' が存在しません"
fi
;;
"delete")
# グループ削除
if grep -q "^$group:" /etc/group; then
sudo groupdel "$group"
echo "グループ '$group' を削除しました"
else
echo "エラー: グループ '$group' が存在しません"
fi
;;
"list")
# グループメンバー表示
if grep -q "^$group:" /etc/group; then
echo "グループ '$group' のメンバー:"
members=$(getent group "$group" | cut -d: -f4)
[ -z "$members" ] && echo "メンバーなし" || echo "$members" | tr ',' '\n'
else
echo "エラー: グループ '$group' が存在しません"
fi
;;
*)
usage
;;
使用方法
スクリプトの保存と権限設定
# スクリプトを保存
vim simple-group-manage.sh
# 実行権限を付与
chmod +x simple-group-manage.sh
コマンドの基本形式
# グループ作成とユーザー追加
./simple-group-manage.sh create <グループ名> <ユーザー名>
# グループ削除
./simple-group-manage.sh delete <グループ名>
# グループメンバー表示
./simple-group-manage.sh list <グループ名>
実行例と結果
グループの作成とユーザー追加
$ ./group-management.sh create test-group memberA
ユーザー 'memberA' をグループ 'test-group' に追加しました
test-group:x:1003:memberA
グループメンバーの確認
$ ./group-management.sh list test-group
グループ 'test-group' のメンバー:
memberA
グループの削除
$ ./group-management.sh delete test-group
グループ 'test-group' を削除しました
エラー時の表示例
$ ./group-management.sh create developers
エラー: ユーザーを指定してください
$ ./group-management.sh list test_group
エラー: グループ 'test_group' が存在しません
さいごに
このスクリプトは、日常的なグループ管理作業を効率化することを目的としています。必要最小限の機能に絞ることで、コードをシンプルに保ちながら、実用的な機能を実現しています。
追加機能が必要な場合は、このスクリプトをベースに拡張することも容易です。例えば、複数ユーザーの一括追加や、グループ情報の詳細表示機能なども考えられます。