usermod -aGの-aGの意味は?

—

by

in

usermod コマンドの基本

Linux のユーザー管理に使われる usermod コマンドは、既存のユーザーアカウントを変更するためのユーティリティです。中でもグループへユーザーを追加する際に頻出するオプションが -aG です。

-a と -G のそれぞれの意味

-G(Group)オプション

-G は「サブグループ(補助グループ)へユーザーを追加」するオプションです。
このオプションに続けてカンマ区切りでグループ名を列挙します。

usermod -G group1,group2 username

上記は username を group1 と group2 の補助グループに設定します。

-a(append)オプション

-a は「追加(append)」を意味し、既存の補助グループリストに新しいグループを 付け足す ことを指示します。

このオプションが無い場合、-G で指定したグループのみがユーザーの補助グループとして設定され、既存の設定はすべて上書きされます。

-aG を組み合わせて使う意味

実務で最も安全かつ一般的に使われる形は 「-aG」 の組み合わせです。

  • -a によって現在所属している補助グループは保持されます。
  • -G で指定したグループが新たに追加されます。

この組み合わせにより、誤って他のグループからユーザーを外すリスクを防げます。

実際の使用例

例:alice ユーザーに docker グループの権限を付与したい場合

usermod -aG docker alice

このコマンドの実行後、alice は docker グループに加えて、既に所属している他の補助グループ(例: staff、audio)も引き続き保持します。

よくある誤解と注意点

  • -a を付け忘れると上書きになる:usermod -G docker alice とだけ書くと、alice の補助グループは docker だけに置き換わります。
  • 主グループは変更されない:-aG は補助グループのみを対象にします。主グループを変えたい場合は -g オプションを使用します。
  • グループが存在しないとエラーになる:指定したグループが /etc/group に無いと usermod は失敗します。事前に groupadd で作成してください。
  • 変更は次回のログインから有効:現在ログイン中のシェルでは新しいグループ権限が反映されません。一度ログアウトし、再度ログインするか newgrp コマンドで切り替えます。

まとめ

-aG は「既存の補助グループは保持したまま、指定したグループを追加する」ための必須コンビネーションです。
誤って -a を省くと、ユーザーが所属していたすべての補助グループが失われる危険があります。
安全に権限付与を行うために、常に usermod -aG グループ名 ユーザー名 の形で使用しましょう。