Authors Top

If you have a few years of experience in the Linux ecosystem, and you’re interested in sharing that experience with the community, have a look at our Contribution Guidelines.

1. Overview

In this tutorial, we’re going to learn how to create, modify, and delete users and groups in Linux using the terminal. In addition, we’ll learn how to add a user to a group, how to remove one from a group, how to list all users, and how to get more information about the existing users on a Linux machine.

2. List All Users

The file /etc/passwd contains all registered users as well as information about them:

$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
...
daemon,,,:/var/run/pulse:/usr/sbin/nologin
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
baeldung:x:1000:1000:,,,:/home/baeldung:/bin/bash

/etc/passwd lists users in this format:

username:x:user id: group id: , , , :/home/username:/bin/bash

Each user has its own UID. 0 is root. 1 to 999 are system users, and from 1000 onward are local users.

3. See User and Group IDs

Linux has a command, id, that prints user and group IDs for the specified user:

$ id baeldung
uid=1000(baeldung) gid=1000(baeldung) groups=1000(baeldung),27(sudo)

We can see what groups the specified user is in.

4. Create a New User

To create a new user in Linux, we can use the useradd command:

$ sudo useradd --create-home new_user

In addition, we can add the –create-home option to create a home directory for the new user.

5. Add/Change User Password

We can use passwd to make a new password for a user or to change a user’s password:

$ sudo passwd new_user
[sudo] password for baeldung:             
New password: 
Retype new password: 
passwd: password updated successfully

The new user that we created didn’t have a password. As a result, passwd made one for it.

6. Modify User

usermod can modify a user account.

6.1. Change Primary Group

We can add the -g option to change the main group of a user account:

$ id new_user
uid=2027(new_user) gid=2027(new_user) groups=2027(new_user)
$ sudo usermod -g baeldung new_user
$ id new_user
uid=2027(new_user) gid=1000(baeldung) groups=1000(baeldung)

The new group replaces the previous group.

6.2. Change UID

We can add the -u option to change the user ID of an existing user account:

$ id new_user
uid=2027(new_user) gid=1000(baeldung) groups=1000(baeldung)
$ sudo usermod -u 2030 new_user
$ id new_user
uid=2030(new_user) gid=1000(baeldung) groups=1000(baeldung)

The command has changed the UID from 2027 to 2030.

6.3. Change Login Name

The -l option helps us change the login name of an existing user account:

$ id new_user
uid=2030(new_user) gid=1000(baeldung) groups=1000(baeldung)
$ sudo usermod -l new_name new_user
$ id new_name
uid=2030(new_name) gid=1000(baeldung) groups=1000(baeldung)

The command has changed the login name from new_user to new_name.

7. Delete a User

We can use userdel to delete an existing user. Adding the -r option will make userdel delete the user’s home directory along with its contents, as well as the user’s mail spool:

$ sudo userdel -r new_user
[sudo] password for baeldung:             
userdel: new_user mail spool (/var/mail/new_user) not found
userdel: new_user home directory (/home/new_user) not found

This user didn’t have a mail spool or a home directory defined for it. So, -r was unnecessary.

8. Add User to Group

To add a user to a group, we can use gpasswd -a:

$ id new_user
uid=2027(new_user) gid=2027(new_user) groups=2027(new_user)
$ sudo gpasswd -a new_user baeldung
Adding user new_user to group baeldung
$ id new_user
uid=2027(new_user) gid=2027(new_user) groups=2027(new_user),1000(baeldung)

The command has appended the specified group to new_user‘s groups.

9. Remove User From Group

We can use gpasswd -d to remove a user from a group:

$ id new_user
uid=2027(new_user) gid=2027(new_user) groups=2027(new_user),1000(baeldung)
$ sudo gpasswd -d new_user baeldung
Removing user new_user from group baeldung
$ id new_user
uid=2027(new_user) gid=2027(new_user) groups=2027(new_user)

The command has removed new_user from the specified group.

10. Create a New Group

We can use groupadd to create a new group:

$ sudo groupadd new_group
$ cat /etc/group | grep new_group
new_group:x:2028:

The command has created a new group, and its group ID is 2028.

11. Modify Group

We can use groupmod to modify a group.

11.1. Change GID

We can add the -g option to change the group ID of an existing group:

$ cat /etc/group | grep new_group
new_group:x:2028:
$ sudo groupmod -g 2040 new_group
$ cat /etc/group | grep new_group
new_group:x:2040:

The command has changed the group ID from 2028 to 2040.

11.2. Change Group Name

To change a group’s name, we can add the -n option:

$ cat /etc/group | grep new_group
new_group:x:2040:
$ sudo groupmod -n new_name new_group
$ cat /etc/group | grep new_name
new_name:x:2040:

The command has changed the group’s name from new_group to new_name.

12. Delete a Group

To remove an existing group, we can use groupdel:

$ sudo groupdel new_group

13. Conclusion

To sum up, we learned how to manage users and groups, as well as how to get more information about users on a Linux machine.

Authors Bottom

If you have a few years of experience in the Linux ecosystem, and you’re interested in sharing that experience with the community, have a look at our Contribution Guidelines.

Comments are closed on this article!