Candid photograph of a Linux server terminal with a soft olive-green glow against a dark slate background, conveying a calm technical atmosphere.

Step-by-step guides for system administrators — covering command-line basics, web server setup, and preparation material for technical interviews.

Browse Tutorials

Managing users and groups with usermod and groupmod

Linux permissions become easier to administer when accounts are organised around clear roles. On RHEL, CentOS and Fedora, usermod changes an existing user account, while groupmod updates an existing group. Together, these commands support routine tasks such as moving a user into a project team, changing a login shell or renaming a department group.

The commands are powerful because they modify account information stored in files such as /etc/passwd, /etc/shadow and /etc/group. Run them with sudo or from a root shell, and check the result with id, getent and groups. This approach is useful whether you are maintaining a small server in Perth or administering several virtual machines for a business in Sydney.

Understanding account and group relationships

Every Linux user has a primary group, recorded by its numeric group ID. A user can also belong to several supplementary groups, which commonly control access to shared directories, services, devices and administrative commands.

To inspect an account before changing it, run:

id alice
getent passwd alice
getent group developers

A safe addition to a supplementary group uses the append option:

sudo usermod -aG developers alice

The -aG combination matters. Using -G developers without -a replaces the user’s existing supplementary group list, potentially removing access to groups such as wheel, docker or a locally defined operations group.

Changing users with usermod

usermod can change a login name, home directory, shell, user ID and group membership. For example, to set Bash as the login shell:

sudo usermod -s /bin/bash alice

To move a home directory while preserving its files, use:

sudo usermod -d /home/alice -m alice

The -m option moves the existing home content into the new location. Changing a primary group requires the target group to exist first:

sudo usermod -g developers alice

For a new employee joining a Melbourne-based support team, it is sensible to verify the account’s current groups before applying this command. A primary group change does not automatically rewrite ownership of files that still carry the user’s old group ID, so review shared directories afterwards with find, ls -l and stat.

Comparing common account and group changes

The following commands cover frequent administration tasks. The exact group name and shell should match the local policy and the software installed on the host.

Task Command Important effect
Add a supplementary group sudo usermod -aG qa alice Keeps existing supplementary groups
Replace supplementary groups sudo usermod -G qa,ops alice Removes groups not listed
Change primary group sudo usermod -g qa alice Changes the account’s default group
Rename a group sudo groupmod -n developers engineering Updates the group name, not file ownership
Change a group ID sudo groupmod -g 1605 developers Can leave files with the previous numeric GID
Lock an account sudo usermod -L alice Prevents password authentication

To rename a group, use groupmod:

sudo groupmod -n developers engineering

A group name change does not alter the numeric ownership stored on files. Similarly, changing a group ID can create files whose numeric GID no longer maps to the expected name. Before using -g, search for affected files on relevant filesystems and plan an ownership correction with chown where appropriate.

For service accounts, avoid unnecessary interactive shells. A web application account may use /sbin/nologin, while a named administrator needs a normal shell and carefully controlled membership in wheel. If the account runs software developed with NetBeans, application-level access should still be separated from operating-system privileges; a REST client example can help developers test the service without granting broad server access.

A practical change checklist

Make changes in a controlled order, especially on production hosts used by teams across Brisbane, Adelaide or regional offices. Record the old state before changing it, and remember that a user may need to log out and back in before a new supplementary group appears in the session.

Before modifying an account:

After modifying an account:

id alice
groups alice
getent passwd alice
sudo -l -U alice

The final command displays permitted sudo rules where the local configuration supports it. Avoid placing passwords directly in command history, and use passwd, SSH keys or an approved identity system according to organisational policy. Australian organisations may also need to align access records with internal audit schedules and privacy controls rather than relying on informal notes.

When changing a group:

Verifying permissions after changes

A successful command only confirms that the account database was edited. It does not prove that an application, existing shell or mounted filesystem now behaves as intended. Open a fresh session, then test access to the actual directory or service:

sudo -iu alice
id
touch /srv/developers/test-file
ls -l /srv/developers/test-file
exit

If access still fails, inspect directory execute permissions, ACLs, SELinux contexts and mount options. On Fedora and RHEL systems, getfacl and ls -Z can reveal controls that ordinary group membership does not explain. For servers hosting build jobs, monitoring resource activity alongside permission changes is useful; the guide to monitor disk I/O covers iostat and iotop.

Keep a repeatable record of commands in your change log, but redact credentials and sensitive personal details. For related account creation workflows, the guide on user accounts and groups complements these modification commands. In practice, verify identity, preserve existing memberships with -aG, check numeric ownership after group changes, and test access from a new login session.