Linux の groupadd コマンド は、新しいグループ(/etc/group のエントリ)を作成するためのコマンドです。
Web アプリ用のグループを作ったり、特定のプロジェクトメンバー専用のグループを用意したりと、ユーザー管理・権限設計の土台として必ず登場します。
オプションを指定することで、グループ ID(GID)を明示的に指定したり、システムグループを作成したり、
既存グループとの重複を許可/禁止したりといった制御も可能です。
誤った GID で作成すると後から修正が面倒になるため、本番環境では方針を決めてから使うのがおすすめです。
groupadd [オプション] グループ名
基本形は非常にシンプルで、グループ名だけを指定すれば /etc/group に新しいグループが追加されます。
必要に応じて -g(GID 指定) や -r(システムグループ) などのオプションを組み合わせます。
・最も基本的な使い方:新しいグループを作成する。
sudo groupadd developers
developers という名前のグループを新規作成します。
GID を指定しない場合は、システムが未使用の GID を自動的に割り当てます。
・GID を指定してグループを作成する。
sudo groupadd -g 1100 webadmin
-g オプションで GID を指定してグループを作成します。
複数台サーバで GID をそろえたい場合や、ディレクトリと GID をきっちり管理したいときに使います。
既に同じ GID が使われているとエラーになるため注意してください。
・システムグループを作成する。
sudo groupadd -r appsys
-r オプションを付けると、システムグループとして作成します。
多くのディストリビューションでは、システムグループ専用の GID 範囲(小さい番号)があり、ユーザー向けとは別管理されます。
デーモン用ユーザー・グループを作る場合などに利用されます。
・既にグループが存在していてもエラーにせず終了させる。
sudo groupadd -f developers
-f オプションは「force」の略で、developers が既に存在している場合でもエラーにせず成功扱いで終了します。
構成管理ツールやスクリプトの中で、「あればそのまま/なければ作成」という処理を雑に書きたいときに便利です。
・GID が重複していても許可する(非推奨に近い上級者向け)。
sudo groupadd -g 2000 -o sharedgroup
-o オプション(non-unique)は、既に使われている GID をあえて再利用することを許可します。
特殊な用途以外ではあまり使いませんし、権限管理が複雑になるため、基本的には避けたほうが安全です。
・暗号化済みパスワードを持つグループを作成する(ほぼ使わない)。
sudo groupadd -p '暗号化済み文字列' securegroup
-p オプションで「暗号化済みパスワード」を渡すことができますが、
グループパスワードの運用自体が一般的ではなく、。
パスワード管理には gpasswd を使うことが推奨されています。
・chroot 環境や別のルートディレクトリ配下の /etc/group を操作する。
sudo groupadd --root /mnt/chroot webadmin
–root ディレクトリを指定すると、実際のルートではなく、そのディレクトリ配下をルートとして扱います。
chroot 環境や別ボリューム上のシステムを準備しているときなどに使います。
・アプリケーション用グループを作って権限をまとめる
Web アプリケーションやバッチ処理用ユーザーを作成する前に、
groupadd appgroup のように専用グループを用意しておくと、
ディレクトリの所有グループやアクセス権をグループ単位で整理しやすくなります。
・複数サーバ間で GID をそろえて運用する
NFS 共有や複数 Web サーバでの運用では、UID/GID の整合性が重要になります。
-g オプションで GID を明示し、全サーバで同じ設定にしておくと、権限周りのトラブルを防ぎやすくなります。
・システムユーザー/グループを分けて整理する
デーモンやサービス用のユーザー・グループは -r を使ってシステムグループとして管理し、
通常ユーザーと番号帯を分けることで、どの ID が何のためのものかが把握しやすくなります。
・構成管理ツールやセットアップスクリプトからのグループ作成
Ansible やシェルスクリプトでサーバ初期設定を自動化する際に、
groupadd -f を使って「既にあれば OK、なければ作る」という処理を書くことがよくあります。
なお、groupadd でグループを作成しただけでは、ユーザーはそのグループに所属していません。
実際の運用では、usermod コマンド などでユーザーをグループに追加していく流れになります。
| short option | long option | description |
|---|---|---|
| -f | --force | 指定したグループが既に存在していてもエラーにせず成功扱いで終了する(GID 指定時は別の未使用 GID を自動選択することがある) |
| -g | --gid | 作成するグループの GID(グループ ID)を明示的に指定する |
| -r | --system | 通常ユーザー用ではなくシステムグループとして作成する(小さい GID 範囲を使用するディストリビューションが多い) |
| -o | --non-unique | 既に使用されている GID であっても重複を許可してグループを作成する(特別な用途向け) |
| -p | --password | 暗号化済みのグループパスワードを指定する(実務ではほとんど利用されず、gpasswd の使用が推奨される) |
| -K | --key | login.defs の設定値を一時的に上書きする(例: -K GID_MIN=2000) |
| -R | --root | 指定したディレクトリをルートディレクトリとみなしてその配下の /etc/group を操作する(chroot 環境などで使用) |
| -P | --prefix | 指定したディレクトリを /etc などのベースパスとして扱う(システムによっては利用不可の場合もある) |
| -h | --help | groupadd コマンドの使い方(ヘルプ)を表示して終了する |
| -V | --version | groupadd コマンドのバージョン情報を表示して終了する |
ここでは、Linux(主に shadow-utils ベース)の groupadd コマンドでよく使う主なオプションを TablePress の表にまとめています。
ディストリビューションによって対応しているオプションが異なる場合があるため、詳細は各システムの man groupadd も確認してください。
ユーザー・グループ管理全体の流れを理解するには、useradd コマンド や gpasswd コマンド の使い方もあわせて押さえておくとよいでしょう。
新着情報
ブログランキングに参加しています。クリックして応援していただけると嬉しいです。
