言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

Linux & Mac & Bashコマンド辞典

  1. トップページ
  2. Linux & Mac & Bashコマンド辞典
  3. groupadd / groupdel / usermod(グループ管理)

groupadd / groupdel / usermod(グループ管理)

『Ubuntu / AlmaLinux』などの Linux 環境でグループを管理するには、groupaddgroupdelusermodgroups コマンドを使います。グループの情報は /etc/group ファイルに保存されており、ユーザーに複数のグループを割り当てることで、ファイルやコマンドへのアクセス権限を細かく制御できます。

構文

# -----------------------------------------------
#  グループの作成
# -----------------------------------------------

# groupadd {グループ名}
#   → 新しいグループを作成します
#   → グループ ID(GID)は自動で採番されます
#   例: sudo groupadd kiryu-clan

# groupadd -g {GID} {グループ名}
#   → GID を明示して作成します
#   例: sudo groupadd -g 1200 kiryu-clan

# -----------------------------------------------
#  グループの削除
# -----------------------------------------------

# groupdel {グループ名}
#   → 指定したグループを削除します
#   → そのグループがいずれかのユーザーのプライマリグループである場合、
#     削除に失敗します。先にユーザーのプライマリグループを変更してください
#   例: sudo groupdel kiryu-clan

# -----------------------------------------------
#  グループへのメンバー追加・削除(usermod)
# -----------------------------------------------

# usermod -aG {グループ名} {ユーザー名}
#   → ユーザーをサブグループ(補助グループ)に追加します
#   → -a(append)オプションが必須です。付けないと既存のグループが上書きされます
#   例: sudo usermod -aG kiryu-clan kazuma

# usermod -g {グループ名} {ユーザー名}
#   → ユーザーのプライマリグループを変更します
#   例: sudo usermod -g kiryu-clan kazuma

# gpasswd -d {ユーザー名} {グループ名}
#   → ユーザーをグループから削除します
#   例: sudo gpasswd -d kazuma kiryu-clan

# -----------------------------------------------
#  グループの確認
# -----------------------------------------------

# groups [{ユーザー名}]
#   → 指定したユーザーが所属するグループの一覧を表示します
#   → ユーザー名を省略すると自分自身のグループを表示します
#   例: groups kazuma

# id [{ユーザー名}]
#   → UID・GID・所属グループを一覧表示します
#   例: id kazuma

# getent group {グループ名}
#   → /etc/group からグループの詳細を取得します
#   例: getent group kiryu-clan

構文一覧

操作コマンド説明
グループの作成groupadd {グループ名}新しいグループを作成します。GID は自動採番されます。
GID を指定して作成groupadd -g {GID} {グループ名}グループ ID を明示してグループを作成します。
グループの削除groupdel {グループ名}指定したグループを削除します。誰かのプライマリグループには設定されていないことが条件です。
サブグループへの追加usermod -aG {グループ} {ユーザー}ユーザーを補助グループに追加します。-a を省略すると既存グループが失われるので必ず付けてください。
プライマリグループの変更usermod -g {グループ} {ユーザー}ユーザーのプライマリグループを変更します。
グループからの削除gpasswd -d {ユーザー} {グループ}ユーザーを指定グループから除外します。
所属グループの確認groups [{ユーザー名}]ユーザーが所属するグループを一覧表示します。省略すると自分自身のグループを表示します。
UID・GID の確認id [{ユーザー名}]UID・GID・全所属グループを一括表示します。
グループ詳細の取得getent group {グループ名}/etc/group からグループの詳細情報(GID・メンバー一覧)を取得します。
全グループの一覧cat /etc/group/etc/group の全内容を表示します。グループ名・GID・メンバーを一覧で確認できます。

使用例

グループを作成してユーザーを追加する
# -----------------------------------------------
#  グループを作成し、複数ユーザーを追加します
# -----------------------------------------------

# 極道系グループ kiryu-clan を作成します
sudo groupadd kiryu-clan

# 作成されたことを確認します
getent group kiryu-clan

実行するコマンドは次の通りです。

$ getent group kiryu-clan
kiryu-clan:x:1200:

実装例は次の通りです。

# kazuma を kiryu-clan グループに追加します
# -a を付けることで既存グループへの所属を保持したまま追加します
sudo usermod -aG kiryu-clan kazuma

# majima も同じグループに追加します
sudo usermod -aG kiryu-clan majima

# グループのメンバーを確認します
getent group kiryu-clan

実行するコマンドは次の通りです。

$ getent group kiryu-clan
kiryu-clan:x:1200:kazuma,majima
ユーザーの所属グループを確認する
# -----------------------------------------------
#  groups コマンドと id コマンドで所属グループを確認します
# -----------------------------------------------

# kazuma の所属グループを一覧表示します
groups kazuma

実行するコマンドは次の通りです。

$ groups kazuma
kazuma : kazuma kiryu-clan sudo

実装例は次の通りです。

# id コマンドで UID・GID・補助グループを詳細表示します
id kazuma

実行するコマンドは次の通りです。

$ id kazuma
uid=1001(kazuma) gid=1001(kazuma) groups=1001(kazuma),27(sudo),1200(kiryu-clan)
グループからユーザーを除外し、グループを削除する
# -----------------------------------------------
#  グループ管理のクリーンアップ手順
# -----------------------------------------------

# majima を kiryu-clan グループから除外します
sudo gpasswd -d majima kiryu-clan

実行するコマンドは次の通りです。

$ sudo gpasswd -d majima kiryu-clan
Removing user majima from group kiryu-clan

実装例は次の通りです。

# kiryu-clan に所属するすべてのユーザーをグループから除外してから
# グループ自体を削除します(メンバーが残っていても削除は可能ですが、
# プライマリグループに設定されているユーザーがいると削除に失敗します)
sudo gpasswd -d kazuma kiryu-clan
sudo groupdel kiryu-clan

# グループが削除されたことを確認します(何も表示されなければ削除完了です)
getent group kiryu-clan

実行するコマンドは次の通りです。

$ getent group kiryu-clan
(何も表示されなければ削除完了です)
/etc/group の構造を確認する
# -----------------------------------------------
#  /etc/group のフォーマット確認
#    書式: {グループ名}:{パスワード}:{GID}:{メンバー一覧}
#    パスワードフィールドは通常 x(シャドウ化)または空欄です
# -----------------------------------------------

# sudo グループの情報を確認します
getent group sudo

実行するコマンドは次の通りです。

$ getent group sudo
sudo:x:27:kazuma

実装例は次の通りです。

# GID が 1000 以上のグループだけを抽出します
# awk でフィールドを分割し、3番目のフィールド(GID)で絞り込みます
awk -F: '$3 >= 1000' /etc/group

実行するコマンドは次の通りです。

$ awk -F: '$3 >= 1000' /etc/group
kazuma:x:1001:
majima:x:1002:
kiryu-clan:x:1200:kazuma,majima

概要

Linux のアクセス権限は「ユーザー・グループ・その他」の 3 層で管理されており、グループを活用することで複数ユーザーへの一括権限付与が容易になります。groupadd でグループを作成し、usermod -aG でユーザーを追加する流れが基本です。usermod -aG-a(append)オプションは忘れず指定してください。付けないと既存のグループ所属がすべて上書きされ、sudo グループなどから外れてしまうため注意が必要です。グループへの変更はログイン中のシェルには反映されないため、newgrp {グループ名} で一時的に切り替えるか、いったんログアウト・再ログインして有効化してください。グループ情報の実体は /etc/group ファイルであり、{グループ名}:{パスワード}:{GID}:{メンバー一覧} という形式で 1 行 1 グループで記録されています。ユーザー管理全般については useradd / userdel / usermod(ユーザー管理) のページも参照してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。