「gpasswd -d で外したつもりが反映されていない気がする」
Linuxでユーザー権限を管理していると、必ず一度はこの場面にぶつかります。
この記事では、Linuxで既存のグループからメンバー(ユーザー)を外すコマンド
gpasswd -d の実践的な使い方を解説します。root権限と「グループ管理者」権限の違い、外した後に反映を確認する手順、副グループに残ったままになっていた時のトラブル対処までを実例つきでまとめました。
この記事のポイント
・gpasswd -d ユーザー名 グループ名 でグループからメンバーを外す
・rootまたは「グループ管理者」だけが実行できる
・外した後は cat /etc/group または id コマンドで必ず反映を確認
・gpasswd -dは「副グループ(補助グループ)」専用。プライマリは usermod で変更する
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
なぜグループからメンバーを外すのか(背景・原理)
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 が消えていることを確認
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日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:グループパスワードを削除する|gpasswd -r / -R の使い分けと現代運用の判断軸
- 前のページへ:groupaddコマンドでグループIDを指定してグループを追加する方法|GID管理の実務も
- この記事の属するカテゴリ:Linuxtipsへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます