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 グループ名 ユーザー名 の形で使用しましょう。