グループからメンバーを外す方法|gpasswd -dの使い方と反映確認

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips > グループからメンバーを外す方法|gpasswd -dの使い方と反映確認
「グループからメンバーを外したいけど、コマンドを忘れた」
「gpasswd -d で外したつもりが反映されていない気がする」
Linuxでユーザー権限を管理していると、必ず一度はこの場面にぶつかります。

この記事では、Linuxで既存のグループからメンバー(ユーザー)を外すコマンド gpasswd -d の実践的な使い方を解説します。
root権限と「グループ管理者」権限の違い、外した後に反映を確認する手順、副グループに残ったままになっていた時のトラブル対処までを実例つきでまとめました。

この記事のポイント

gpasswd -d ユーザー名 グループ名 でグループからメンバーを外す
・rootまたは「グループ管理者」だけが実行できる
・外した後は cat /etc/group または id コマンドで必ず反映を確認
・gpasswd -dは「副グループ(補助グループ)」専用。プライマリは usermod で変更する


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

なぜグループからメンバーを外すのか(背景・原理)

Linuxではファイルやディレクトリのアクセス権限を「ユーザー」と「グループ」で管理します。
あるユーザーを特定のディレクトリ(例えば /var/www)に書き込ませたい時は、そのディレクトリの所有グループにユーザーを追加します。

逆に、退職・異動・権限の見直しなど、後から「このユーザーはもうこのグループに置いておくべきではない」という場面が必ず出てきます。
そのまま放置するとアクセス権限が過剰なまま残り、セキュリティ事故の温床になります。

ここで使うのが gpasswd -d です。
「グループに対してパスワードを設定するコマンド」という見た目のせいで初学者は混乱しますが、実際は グループのメンバー管理コマンド として現場で使われています。

基本的な使い方(gpasswd -d でメンバーを外す)

1. コマンドの書式

書式は非常にシンプルです。

# gpasswd -d ユーザー名 グループ名

オプション -d は「delete(外す)」の意味で、引数にはこの順番でユーザー名・グループ名を指定します。順番を入れ替えると別ユーザーを別グループから外す結果になりかねないので、書式を体に染み込ませてください。

2. 実行例(グループ管理者で外す)

ここでは「miyazaki」というユーザーを「unyo」というグループから外します。
事前にユーザー「pakira」が unyo グループの管理者として登録されているものとします。

[pakira@Tiger ~]$ whoami pakira # 現在ログインしているのが pakira(グループ管理者)であることを確認 [pakira@Tiger ~]$ cat /etc/group | grep miyazaki unyo:x:600:miyazaki miyazaki:x:601: # miyazaki が unyo グループに所属していることを確認 [pakira@Tiger ~]$ gpasswd -d miyazaki unyo Removing user miyazaki from group unyo # unyo グループから miyazaki を外す [pakira@Tiger ~]$ cat /etc/group | grep miyazaki miyazaki:x:601: # unyo の行から miyazaki が消えていることを確認

3行目で unyo:x:600:miyazaki となっていた行が、コマンド実行後には unyo:x:600: に変わり、最後のメンバーカラムが空になります。これが「外れた」サインです。

3. 実行できるユーザーの条件

gpasswd -d を実行できるのは、次の2種類のユーザーだけです。

root:どのグループからでも外せる
グループ管理者:自分が管理者として登録されているグループからのみ外せる

グループ管理者は gpasswd -A 管理者ユーザー名 グループ名 で事前に登録しておきます。
管理者ではない一般ユーザーが実行すると「Permission denied」となり外せません。

応用・実務Tips

反映確認は cat /etc/group と id の両方で行う

gpasswd -d でメンバーを外した後は、必ず2系統から反映を確認します。

# /etc/group ファイルから直接見る方法 # cat /etc/group | grep グループ名 # 対象ユーザー側から見る方法 # id ユーザー名

/etc/group はファイル実体、id はユーザーが「自分は今どのグループに属しているか」を読み出すコマンドです。後者は外したユーザーが既にログイン中の場合、セッションがキャッシュを保持していて古い情報を返すケースがあるため、再ログイン後に再確認するのが安全です。

外したユーザーは即座にアクセス権が消えるわけではない

これは現場でつまづきやすい落とし穴です。
gpasswd -d でグループから外しても、対象ユーザーが 既にログイン中のセッションには反映されません
グループ情報はログイン時に読み込まれ、セッションが続く限り保持されるためです。

セキュリティ目的で外す時は、必ず対象ユーザーのセッションを切断(強制ログオフ)するか、サーバーを再ログイン状態にする運用を組み合わせてください。

複数のグループから一括で外したい時

gpasswd -d は1回の実行で1グループずつしか処理できません。
複数グループから外したい場合は、シェルのforループで回す方法が現場で使われます。

# miyazaki を unyo, dev, web の3グループから一括で外す # for g in unyo dev web; do gpasswd -d miyazaki $g; done

ループでまとめる際は、対象ユーザー名・グループ名を打ち間違えると別人を外してしまう事故が起きます。実行前に echo でループ内容を確認する習慣をつけると安全です。

トラブルシュート・エラー対処

「Permission denied」が出た時の対処法

最も多いエラーがこれです。
原因はほぼ次の2つに集約されます。

・実行ユーザーがroot でも グループ管理者でもない
・グループ管理者は設定されているが、その管理者ユーザーでログインしていない

管理者が誰なのかは /etc/gshadow の該当行の最初のフィールドで確認できます。確認には root 権限が必要です。

# sudo grep ^グループ名: /etc/gshadow

出力の : 区切り2番目(パスワードハッシュの後)に管理者ユーザー名が入っています。

「プライマリグループ」は gpasswd -d で外せない

これも見落としやすいポイントです。
ユーザーには「プライマリグループ(基本グループ)」と「副グループ(補助グループ)」があります。gpasswd -d で外せるのは 副グループのみ で、プライマリグループからは外せません。

プライマリグループを変更する場合は usermod -g 新しいグループ名 ユーザー名 を使います。

# miyazaki のプライマリグループを users に変更する # sudo usermod -g users miyazaki

外したつもりが /etc/group に残っている

ごく稀ですが、vi /etc/group で手動編集していた古い運用の名残で、ファイル末尾に空白や重複行が残っているケースがあります。
このような場合は grpck コマンドでグループファイルの整合性チェックを実行すると、不整合を検出できます。

# sudo grpck

本記事のまとめ

やりたいこと コマンド
グループからメンバーを外す gpasswd -d ユーザー名 グループ名
外れたかをグループ側から確認する cat /etc/group | grep グループ名
外れたかをユーザー側から確認する id ユーザー名
グループ管理者を設定する gpasswd -A 管理者ユーザー名 グループ名
プライマリグループを変更する usermod -g 新しいグループ名 ユーザー名
グループファイルの整合性をチェックする sudo grpck

■関連記事
グループに管理者を設定する

ユーザー・グループ管理を一度間違えただけで、本番サーバーは止まります

gpasswdやusermodの実行ミスは、サーバーへのログインが突然できなくなる、共有ディレクトリが読めなくなる、といった事故に直結します。
ネットの断片的な情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。