0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Linuxのグループ管理を簡単にするスクリプト

Posted at

はじめに

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' が存在しません

さいごに

このスクリプトは、日常的なグループ管理作業を効率化することを目的としています。必要最小限の機能に絞ることで、コードをシンプルに保ちながら、実用的な機能を実現しています。
追加機能が必要な場合は、このスクリプトをベースに拡張することも容易です。例えば、複数ユーザーの一括追加や、グループ情報の詳細表示機能なども考えられます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?