2026年7月30日

2026年7月30日

groupadd・usermodでグループ管理する方法

はじめに

Linuxではユーザーに加えて「グループ」を使ってアクセス制御を行います。グループに権限を付与し、複数のユーザーをそのグループに所属させることで、人事異動や役割変更にも柔軟に対応できます。

本記事ではグループの作成(groupadd)、削除(groupdel)、メンバー操作(usermod / gpasswd)を、Webサーバーやデプロイ用グループなど実務で使うパターンとともに解説します。

症状・背景

グループ管理が必要になる主な場面:

  • デプロイ担当者をまとめた deployer グループを作って共通ディレクトリに権限を付けたい
  • 新規ユーザーを sudo や docker グループに追加して権限を付与したい
  • 退職者を共有グループから抜き取りたい
  • WordPress 用に www-data の補助グループにアプリ管理者を含めたい

手順・設定方法

ステップ1: グループの作成・削除

# グループを作成
sudo groupadd developers

# GID を指定して作成
sudo groupadd -g 2000 developers

# システムグループ(GID < 1000)として作成
sudo groupadd -r myapp

# グループを削除
sudo groupdel developers

# グループ一覧を確認
getent group | head
cat /etc/group | grep developers

ステップ2: usermodでグループ変更

# プライマリグループを変更(-g)
sudo usermod -g developers alice

# 補助グループに追加(-aG、必ず -a を付ける!)
sudo usermod -aG docker alice
sudo usermod -aG sudo,docker,developers alice

# -G だけだと既存の補助グループを「上書き」する(危険)
# sudo usermod -G docker alice   # alice の他の補助グループが消える

# ユーザーをグループから外す(-G で残したいグループだけ指定)
sudo usermod -G sudo alice       # docker は外れる

# gpasswd で個別操作(推奨)
sudo gpasswd -d alice docker     # alice を docker から削除
sudo gpasswd -a alice developers # alice を developers に追加

ステップ3: グループのメンバー確認

# ユーザーが所属するグループを確認
id alice
groups alice

# グループのメンバー一覧
getent group docker
# docker:x:998:alice,bob,charlie

# 補助グループの数を確認
id -nG alice

# 現在のセッションで有効なグループ
groups

ステップ4: 実践的な運用

# 共有ディレクトリにグループ権限を付与
sudo groupadd webteam
sudo usermod -aG webteam alice
sudo usermod -aG webteam bob

sudo mkdir -p /srv/shared
sudo chgrp webteam /srv/shared
sudo chmod 2775 /srv/shared    # SetGIDで新規ファイルもwebteam所属に

# 新規ユーザーを作って sudo グループに即追加
sudo useradd -m -s /bin/bash -G sudo charlie
sudo passwd charlie

# グループの管理者を設定(gpasswd -A)
sudo gpasswd -A alice developers  # alice が developers の管理者に
# 管理者は sudo なしで gpasswd -a/-d でメンバー変更可能

# グループ名を変更
sudo groupmod -n newname oldname

# 補助グループの追加が反映されない場合は再ログイン or newgrp
newgrp docker

注意事項

  • usermod -G は補助グループを「上書き」する。追加するときは必ず -aG(または gpasswd -a)
  • グループ追加後は反映のため再ログインまたは newgrp が必要(既存セッションでは反映されない)
  • システムグループ(docker, sudo, www-data 等)を消すとサービスが壊れる
  • SetGID(chmod g+s)を付けたディレクトリは共有運用で非常に便利
  • /etc/group の整合性は grpck で検証できる

まとめ

1. 作成: groupadd developers、GID指定は -g

2. メンバー追加: usermod -aG group user-a を忘れない)

3. メンバー削除: gpasswd -d user group が安全

4. 確認: id / groups / getent group で所属確認

5. 共有運用: グループ + chmod g+s で共同編集ディレクトリを実現

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ