シェルでユーザの所属グループを設定するコマンドusermodとgpasswdの違い

はじめに

以下のサイトでさくら VPS をセットアップしています。

新規作成したユーザーを特定のグループに所属させる場合に usermod コマンドを使ったり、 gpasswd を使ったりとそれぞれのケースが有ったのですが、どう違うのか調べてみました。

※ここでは group1 グループgroup2 グループ がすでに存在しているものとします。

usermod を利用

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
$ sudo useradd xxxxx

# group1を設定
$ sudo usermod -G group1 xxxxx
$ id xxxxx
uid=1002(xxxxx) gid=1002(xxxxx) groups=1002(xxxxx),1003(group1)

# group2を設定
$ sudo usermod -G group2 xxxxx
$ id xxxxx
uid=1002(xxxxx) gid=1002(xxxxx) groups=1002(xxxxx),1004(group2)

gpasswd を利用

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
$ sudo useradd xxxxx

# group1を設定
$ sudo gpasswd -a xxxxx group1
Adding user xxxxx to group group1
$ id xxxxx
uid=1002(xxxxx) gid=1002(xxxxx) groups=1002(xxxxx),1003(group1)

# group2を設定
$ sudo gpasswd -a xxxxx group2
Adding user xxxxx to group group2
$ id xxxxx
uid=1002(xxxxx) gid=1002(xxxxx) groups=1002(xxxxx),1003(group1),1004(group2)

まとめ

usermodBash でいうリダイレクト “>” のようにセカンドグループを上書き、 gpasswd は “»” のようにセカンドグループを追加する。 gpasswd の方が使いやすいです。