addgroup 徹底解説:Linux/Dockerでのグループ管理を理解する

はじめに

LinuxやDocker環境でユーザー管理を行う際に欠かせないのが「グループ」です。
ユーザー単位ではなく、グループ単位で権限をまとめて管理することで、セキュリティや運用の効率が向上します。

この記事では、Linux の addgroup コマンドについて詳しく解説し、実際に手を動かしながら理解を深めるハンズオンを行います。


1. addgroupとは?

addgroup は、新しいグループをシステムに追加するコマンドです。
主に Debian 系(Ubuntu など)のディストリビューションで使用され、Red Hat 系では同等のコマンドとして groupadd が使われます。

基本構文は以下の通りです。

sudo addgroup [オプション] グループ名

たとえば、developers というグループを追加する場合:

sudo addgroup developers

これにより /etc/group に以下のようなエントリが追加されます。

developers:x:1002:

補足:
x は暗号化されたパスワードのプレースホルダで、1002 はグループID(GID)です。


2. グループの種類

Linuxでは、主に次の2種類のグループがあります。

種類説明
プライマリグループユーザー作成時に自動的に作られるグループ。通常はユーザー名と同じ。
サブグループ(補助グループ)ユーザーが追加で所属できるグループ。ファイル共有などで活用。

addgroup は後者のような補助グループを作るのに多く使われます。


3. ハンズオン:グループの作成と管理

ここでは実際にグループを作成し、ユーザーを追加してみましょう。

ステップ1:新しいグループを作成

sudo addgroup project-team

確認:

grep project-team /etc/group

出力例:

project-team:x:1003:

ステップ2:ユーザーを追加してみる

新しいユーザー taro を作成し、先ほどのグループに追加します。

sudo adduser taro
sudo adduser taro project-team

確認:

groups taro

出力例:

taro : taro project-team

これで taroproject-team グループにも所属しています。


ステップ3:グループの削除

不要になったグループは delgroup コマンドで削除できます。

sudo delgroup project-team

確認:

grep project-team /etc/group

(出力がなければ削除完了)


4. Dockerfileでのaddgroup活用例

addgroup は Dockerfile でもよく利用されます。
セキュリティ上、rootユーザーで実行しないために、専用のユーザーとグループを作成するのが一般的です。

Dockerfile例

FROM debian:bookworm

# グループとユーザーを作成
RUN addgroup --system appgroup && adduser --system --ingroup appgroup appuser

# 作業ディレクトリと権限設定
WORKDIR /app
COPY . /app
RUN chown -R appuser:appgroup /app

USER appuser
CMD ["bash"]

このDockerfileでは、rootユーザーではなくappuserでコンテナを動作させる構成になっています。
--system オプションにより、システム用(UID/GID < 1000)のグループ・ユーザーを作成しています。


5. よく使うオプション一覧

オプション説明
--systemシステム用グループを作成
--gid <番号>特定のGIDで作成
--quiet出力を抑制
--helpヘルプを表示

例:

sudo addgroup --gid 1050 devops

6. トラブルシューティング

状況原因対処法
addgroup: The group 'xxx' already exists.同名グループが存在grep xxx /etc/group で確認後、別名で作成
権限エラーsudo権限がないsudo を付けて再実行
GID重複指定したGIDが使用中別のGIDを指定

7. まとめ

  • addgroup はグループ管理の基本コマンド。
  • Dockerfileでも非rootユーザー実行に必須。
  • adduser と組み合わせることで、柔軟なアクセス制御が可能。

次のステップ

  • /etc/group/etc/passwd を読み解いてシステム理解を深める
  • usermod -aG を使った動的グループ追加を試す
  • Docker環境でのユーザー・グループ権限設計を実践する

投稿日

カテゴリー:

投稿者:

タグ:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です