groupaddコマンドでグループを追加する方法|groupmod・groupdelや実務設計もコマンド

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxコマンド, LinuxコマンドF-J, ユーザ・グループ管理コマンド > groupaddコマンドでグループを追加する方法|groupmod・groupdelや実務設計もコマンド
「Linuxでグループを追加したいけど、どのコマンドを使えばいいか分からない」
「/etc/group ファイルの中身の意味を知りたい」
Linuxのユーザー管理では、グループを使った権限制御が基本です。Webサーバーのファイル共有や開発チームの権限分離など、グループの設計は現場で必ず必要になります。

この記事では、groupadd コマンドの実践的な使い方を解説します。
グループの追加から、groupmod での変更、groupdel での削除、/etc/group ファイルの読み方、実務でのグループ設計の考え方まで網羅しました。
【この記事でわかること】
・groupadd グループ名 で新しいグループを作成し、GID は空き番号から自動割り当てされる
・-g でGIDを指定して複数サーバー間でGIDを統一でき、-r でシステムグループを作成できる
・グループにユーザーを追加するには usermod -aG グループ名 ユーザー名 を使う(-a 必須)
・groupmod -n で名前変更、groupdel で削除。プライマリグループになっているグループは削除不可
・Webサーバーのファイル共有は共有グループ + chmod g+s(SGID)の組み合わせが定番

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

Linuxのグループとは?権限管理の基本

Linuxでは、ファイルやディレクトリのアクセス権を「所有者」「グループ」「その他」の3つで制御します。グループを使うと、複数のユーザーに同じ権限をまとめて付与できます。

たとえば、Web開発チームの3人に /var/www/html/ の編集権限を与えたい場合、3人全員を同じグループに所属させて、ディレクトリのグループ権限を設定すればOKです。

グループには2種類あります。

プライマリグループ:ユーザーが必ず1つ持つメインのグループ。ファイル作成時にこのグループが所有グループになる
サブグループ(補助グループ):ユーザーが追加で所属できるグループ。複数所属が可能

グループ情報は /etc/group ファイルに格納されています。

/etc/group ファイルの読み方

/etc/group ファイルは、1行につき1グループの情報が以下の形式で記録されています。

# /etc/group の形式 # グループ名:パスワード:GID:メンバーリスト $ cat /etc/group | head -5 root:x:0: bin:x:1: daemon:x:2: sys:x:3: adm:x:4:tomohiro

グループ名:グループの名前
パスワード:通常は「x」(/etc/gshadowで管理)
GID:グループID(数値)
メンバーリスト:サブグループとして所属しているユーザー(カンマ区切り)

groupaddコマンドでグループを追加する

1. 基本的なグループ追加

groupadd コマンドの基本構文は非常にシンプルです。root権限が必要です。

# webdevグループを作成する $ sudo groupadd webdev # 作成されたか確認する $ grep webdev /etc/group webdev:x:1001:

GID(グループID)は空いている番号から自動的に割り振られます。

2. GIDを指定してグループを追加する(-g)

複数サーバーでGIDを統一したい場合など、GIDを明示的に指定できます。

# GIDを2000に指定してグループを作成する $ sudo groupadd -g 2000 devteam $ grep devteam /etc/group devteam:x:2000:

3. システムグループを作成する(-r)

サービス用のグループを作成する場合は -r オプションを使います。システムグループにはGID 1000未満の番号が割り当てられます。

# nginx用のシステムグループを作成する $ sudo groupadd -r nginx $ grep nginx /etc/group nginx:x:988:

グループにユーザーを追加する

グループを作成したら、usermod -aG でユーザーをそのグループに追加します。

-a(append)を付け忘れると、ユーザーの既存のサブグループが全て外れてしまうので注意してください。

# tomohiroをwebdevグループに追加する $ sudo usermod -aG webdev tomohiro # 所属グループを確認する $ id tomohiro uid=1000(tomohiro) gid=1000(tomohiro) groups=1000(tomohiro),1001(webdev) # または getent で確認する $ getent group webdev webdev:x:1001:tomohiro

groupmodでグループ情報を変更する

既存のグループ名やGIDを変更するには groupmod を使います。

1. グループ名を変更する(-n)

# webdevをwebteamに名前変更する $ sudo groupmod -n webteam webdev $ grep webteam /etc/group webteam:x:1001:tomohiro

2. GIDを変更する(-g)

# GIDを3000に変更する $ sudo groupmod -g 3000 webteam

GIDを変更した場合、そのグループが所有していたファイルのGIDは古い番号のままです。find コマンドで該当ファイルを見つけて chgrp で修正してください。

groupdelでグループを削除する

不要になったグループは groupdel で削除できます。

# webteamグループを削除する $ sudo groupdel webteam

【重要】削除前の注意事項

・いずれかのユーザーのプライマリグループになっているグループは削除できません
・削除前に getent group グループ名 でメンバーを確認しましょう
・そのグループが所有するファイルは、GIDが数値のまま残ります

グループ情報の確認コマンド

グループ関連の情報を確認するコマンドをまとめておきます。

# 全グループを一覧表示する $ getent group # 特定グループの情報を確認する $ getent group webdev # 現在のユーザーの所属グループを確認する $ groups # 特定ユーザーの所属グループを確認する $ id tomohiro

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

「groupadd: group 'xxx' already exists」

同名のグループが既に存在しています。getent group グループ名 で確認してください。

$ sudo groupadd webdev groupadd: group 'webdev' already exists # 既存のグループ情報を確認する $ getent group webdev webdev:x:1001:tomohiro

「groupadd: cannot lock /etc/group」

別のユーザー管理コマンドが実行中の場合に発生します。しばらく待ってから再実行してください。

ロックファイルが残ってしまっている場合は、以下で確認・削除できます。

# ロックファイルの確認 $ ls -la /etc/group.lock # 他にユーザー管理コマンドが動いていないことを確認してから削除 $ sudo rm /etc/group.lock

「groupdel: cannot remove the primary group of user 'xxx'」

そのグループをプライマリグループとしているユーザーがいる場合は削除できません。先にそのユーザーのプライマリグループを変更してください。

# ユーザーのプライマリグループを変更してからグループを削除する $ sudo usermod -g users tomohiro $ sudo groupdel webdev

実務でのグループ設計の考え方

Webサーバーのファイル共有

ApacheやNginxのドキュメントルートを複数の開発者で編集する場合、共有グループを作成するのが定番です。

# webadminグループを作成してメンバーを追加する $ sudo groupadd webadmin $ sudo usermod -aG webadmin user1 $ sudo usermod -aG webadmin user2 # ドキュメントルートのグループを変更する $ sudo chgrp -R webadmin /var/www/html/ $ sudo chmod -R g+w /var/www/html/ # 新規ファイルもグループを引き継ぐようにする $ sudo chmod g+s /var/www/html/

chmod g+s(SGIDビット)を設定すると、そのディレクトリ内に作成されたファイルは自動的に親ディレクトリのグループを引き継ぎます。

本記事のまとめ

やりたいこと コマンド
グループを追加する sudo groupadd グループ名
GIDを指定してグループを追加する sudo groupadd -g GID グループ名
システムグループを追加する sudo groupadd -r グループ名
ユーザーをグループに追加する sudo usermod -aG グループ名 ユーザー名
グループ名を変更する sudo groupmod -n 新名前 旧名前
グループを削除する sudo groupdel グループ名
グループ情報を確認する getent group グループ名

グループ設計をきちんと考えてサーバーを管理できていますか?

コマンドの使い方を一つひとつ覚えていくのは時間がかかります。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

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

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

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

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

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

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

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

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

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

この記事を書いた人

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

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

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