ユーザーをグループに追加する方法(usermod -aG )

2021-06-25

Linuxで、ユーザーをグループに追加する場合について

Linuxでユーザーを特定のグループに追加する場合は、「usermod」を使いますが、このコマンドでオプションを間違うと思っていたようにグループ追加ができない場合があります。

「test01」というユーザーで、グループが「test01」、「apache」に所属しています。
このユーザーで「mysql」のグループを追加するケースで説明します

# id test01
uid=1002(test01) gid=1002(test01) groups=1002(test01),48(apache)

usermod -G でユーザーを特定のグループに追加する場合

「usermod -G」でユーザーに特定のグループを追加すると、セカンダリグループが追加されます。
usermod -G グループ名 ユーザ名」とすると、今設定しているセカンダリグループが指定したセカンダリグループが上書きされるので注意が必要です。このあたりが落とし穴みたいですね

「test01」は、「test01、apache」のグループに所属しています
# id test01
uid=1002(test01) gid=1002(test01) groups=1002(test01),48(apache)

「mysql」のグループを追加します
# usermod -G mysql test01

セカンダリグループの「apache」が「mysql」に書き換わります
# id test01
uid=1002(test01) gid=1002(test01) groups=1002(test01),27(mysql)

usermod -aG でユーザーを特定のグループに追加する場合

「usermod -G」ではユーザーに特定のグループを追加すると、セカンダリグループが追加置き換わるので、ユーザー追加の場合は、「usermod -aG グループ名 ユーザ名」とすると今設定しているセカンダリグループが新しく指定したセカンダリグループが追加されます

ユーザーのグループ追加の場合は「usermod -aG グループ名 ユーザ名」を使用しましょう

「test01」は、「test01、apache」のグループに所属しています
# id test01
uid=1002(test01) gid=1002(test01) groups=1002(test01),48(apache)

「mysql」のグループを追加します
# usermod -aG mysql test01

セカンダリグループの「apache」と「mysql」になっています
# id test01
uid=1002(test01) gid=1002(test01) groups=1002(test01),48(apache),27(mysql)