【Linux】gpasswdコマンドでグループ管理者と所属メンバーを制御する

目次

概要

/etc/group および /etc/gshadow ファイルを操作し、グループの管理を行うためのコマンドです。

コマンド名に「passwd」と付いていますが、単にグループパスワード(現在はあまり使われない機能)を設定するだけでなく、グループへのユーザー追加・削除や、グループ管理者の指名といった、グループ運用の核心となる機能を提供します。特に一般ユーザーにグループ管理権限を委譲する場合に必須となります。

仕様(引数・オプション)

構文

gpasswd [オプション] [グループ名]

主なオプション

オプション説明
-a [ユーザー名]指定したユーザーをグループに追加します(Add)。
-d [ユーザー名]指定したユーザーをグループから削除します(Delete)。
-M [ユーザーリスト]グループのメンバーを指定したユーザー一覧で上書きします(Members)。カンマ区切りで複数指定可能です。
-A [ユーザーリスト]グループの管理者(Administrator)を指定します。管理者はメンバーの追加・削除権限を持ちます。
-rグループのパスワードを削除します(Remove password)。
-Rグループへのアクセスを制限します(パスワードを知っていても newgrp 不可)。

基本の使い方

グループを作成し、初期メンバーを追加する

新規グループ blue_team を作成し、ユーザー mori をメンバーとして追加します。

BASH

# グループの作成
sudo groupadd blue_team

# グループ情報の確認(作成直後はメンバーなし)
grep blue_team /etc/group
grep blue_team /etc/gshadow

# ユーザー mori を blue_team に追加
sudo gpasswd -a mori blue_team

# 追加後の確認
grep blue_team /etc/group

実行結果例

# 追加前
blue_team:x:1005:

# 追加後
blue_team:x:1005:mori

実践コマンド

メンバーを一括で設定(上書き)する

-M オプションを使用すると、指定したユーザーリストで現在のメンバー情報を完全に置き換えます。既存のメンバーはリストに含まれていなければ削除されます。

BASH

# blue_team のメンバーを mori と mori_sub の2名だけに設定する
sudo gpasswd -M mori,mori_sub blue_team

# 結果確認
grep blue_team /etc/group

実行結果例

blue_team:x:1005:mori,mori_sub

グループ管理者を指名する

通常、グループのメンバー追加はroot権限が必要ですが、-A オプションで「グループ管理者」に指名されたユーザーは、sudoなしでそのグループの gpasswd -a などを実行できるようになります。

BASH

# mori_sub を blue_team の管理者に設定
sudo gpasswd -A mori_sub blue_team

# 管理者情報の確認(/etc/gshadow の3フィールド目)
sudo grep blue_team /etc/gshadow

実行結果例

blue_team:!::mori_sub:mori,mori_sub

※ 左から「グループ名」「パスワード(暗号化)」「管理者リスト」「メンバーリスト」です。

カスタムポイント

  • グループパスワードの設定オプションなしで gpasswd [グループ名] を実行すると、そのグループにパスワードを設定できます。これにより、グループに所属していないユーザーでも newgrp コマンドでパスワードを入力することで、一時的にそのグループの権限を得ることができます(セキュリティリスクが高いため、現在はあまり推奨されません)。

注意点

  1. usermod -G との違いusermod -G は「ユーザー側」の属性を書き換えるため、-a を付け忘れると所属している他のグループ設定が消えてしまいます。一方、gpasswd -a は「グループ側」にユーザーを追記する動作のため、他のグループ所属情報に影響を与えず安全にメンバー追加ができます。
  2. 即時反映についてグループへの追加や削除は、対象ユーザーが次回ログインするまで反映されません。ログイン中のユーザーに即座に反映させるには、一度ログアウトするか newgrp コマンドを実行してもらう必要があります。

まとめ

gpasswdコマンドは、グループ運用の柔軟性を高めるためのツールです。

単なるメンバー追加には usermod -aG も使われますが、誤操作のリスクが低い gpasswd -a の方が運用上安全です。また、-A オプションによる権限委譲は、システム管理者の負担を減らし、各チームリーダーにメンバー管理を任せる際に非常に有効な機能です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次