はじめに
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
これで taro
は project-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環境でのユーザー・グループ権限設計を実践する
コメントを残す