【Linux】groupdelコマンドで不要なグループをシステムから削除する

目次

概要

作成済みのグループ定義をシステムから削除するためのコマンドです。

プロジェクトの解散や、組織変更などで不要になったグループID(GID)を /etc/group および /etc/gshadow から取り除きます。

ただし、「あるユーザーのメイン(プライマリ)グループ」として設定されているグループは、安全のため削除できないという重要な制約があります。

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

構文

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

主なオプション

オプション説明
-f / –force削除対象のグループが、あるユーザーのプライマリグループであっても強制的に削除します(非推奨)。

groupdel には基本的に複雑なオプションはありません。

基本の使い方

グループ(ここでは mori_project)が存在することを確認してから削除し、再度確認して消えていることを検証するフローです。

# 削除前の確認
grep mori_project /etc/group

# グループを削除
sudo groupdel mori_project

# 削除後の確認(何も表示されなければOK)
grep mori_project /etc/group

実行結果例

# 実行前
mori_project:x:1003:mori,tanaka

# 実行後
(出力なし)

実践コマンド

削除時にエラー「cannot remove the primary group of user ‘xxx’」が出る場合

ユーザー mori のプライマリグループとして設定されているグループ(mori_main)を削除しようとすると、システムが保護機能により拒否します。

# ユーザー mori の所属情報を確認(gid=1002(mori_main) に注目)
id mori

# プライマリグループを削除しようとする
sudo groupdel mori_main

実行結果例

uid=1002(mori) gid=1002(mori_main) groups=1002(mori_main),10(wheel)
groupdel: cannot remove the primary group of user 'mori'

※このエラーが出た場合、先にユーザー mori を削除するか、usermod -gmori のプライマリグループを別のグループに変更する必要があります。

カスタムポイント

  • 強制削除 (-f)上記のプライマリグループエラーを無視して削除を強行しますが、そのユーザーのファイル所有権情報などが不整合を起こすため、通常は絶対に使用しないでください。Bashsudo groupdel -f mori_main

注意点

  1. ファイルは削除されないgroupdel はあくまで「グループの定義」を消すだけです。そのグループが所有していたファイルやディレクトリは、所有グループID(GID)が数値のまま(例: 1002)システムに残ります。セキュリティリスクを防ぐため、find / -gid [削除するGID] などでファイルを検索し、対処を行ってから削除するのが理想です。
  2. ユーザーのサブグループ設定あるユーザーの「サブグループ(セカンダリ)」として登録されているグループを削除した場合、そのユーザーの所属情報からは自動的に除去されます(ユーザー自体は消えません)。

応用

グループIDが残っているファイルを検索する

グループ削除後、数値だけのGIDになってしまった「持ち主不明」のファイルを洗い出します。

# 削除したグループID(例: 1003)を持つファイルを検索
find /home -gid 1003

まとめ

groupdel はシンプルなコマンドですが、「プライマリグループは消せない」というルールが最大のポイントです。

エラーが出たときは無理やり -f で消すのではなく、「誰がそのグループを使っているか(id mori 等)」を確認し、ユーザー側の設定を整理してから削除するようにしてください。

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

この記事を書いた人

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

目次