How can I change a user's default group in Linux?

The usermod command will allow you to change a user's primary group, supplementary group or a number of other attributes. The -g switch controls the primary group.

For your other questions...

  1. If you specify a group, groupname, that does not exist during the useradd stage, you will receive an error - useradd: unknown group groupname

  2. The groupadd command creates new groups.

  3. The group will remain if you remove all users contained within. You don't necessarily have to remove the empty group.

  4. Create the hilbert group via groupadd hilbert. Then move David's primary group using usermod -g hilbert hilbert. (Please note that the first hilbert is the group name and the second hilbert is the username. This is important in cases, where you are moving a user to a group with a different name)

You may be complicating things a bit here, though. In many Linux distributions, a simple useradd hilbert will create the user hilbert and a group of the same name as the primary. I would add supplementary groups specified together using the -G switch.

You need to read the man usermod which explains what happens with the various options:

usermod -g hilder hilder

will replace your login group from 'faculty' to 'hilder', as long as the group 'hilder' exists. If it doesn't exist then you first need to create it with groupadd.

When you use the -G option you should also use the -a option to append new groups to the current list of supplementary groups that user 'hilder' belongs. Without the -a option you will replace current supplementary groups with a new group set. Therefore use this cautiously.

To change a user's primary group in Linux:

  • usermod -g new_group user_name
  • terminate all user_name's active sessions

To test your changes run id and look at the value of gid=

If the command runs without errors but the gid hasn't change you've missed the bold part of step 2.