Users and Groups in Linux

Reading Time: 4 minutes

Hello readers, welcome to my blog on users and groups in Linux. As we know that Linux is a multi-user operating system, we’ll see how to add and configure the users and groups in Linux.

What does multi-user mean?

An operating system is considered as multi-user when it allows multiple users to access a computer. Also, Keeping security in mind, it does not allow a user to manipulate other user’s stuff including files, folders, preferences etc. Linux allow multiple users to use the computer simultaneously.

Adding Users in Linux

To manipulating the user accounts, you need to be a root user. To become one, you need to use the following command:

sudo --login
--OR--
sudo -i

This will prompt you for the password. After successful login, the terminal $ prompt will change to # to indicate that you are logged in as a root user. You can also verify the same by using the whoami command which shows the currently logged in user, which in our case would be root.

Now to add the user you can enter the following command:

useradd <new_username> --create-home

Whenever you run this command, it will create the user’s home directory as /home/<username>. The user’s home directory is replicated from /etc/skel directory. All the files present in this folder will be copied to new user’s home directory.

The user’s information is stored in the /etc/passwd file. This file stores the user information in the following format:

[username]:[x]:[UID]:[GID]:[comment]:[home_directory]:[default_shell]

Here’s the description of the above format:

  • username: This field contains the username of the account.
  • x: This field contains the password stored in /etc/shadow in an encrypted format.
  • UID and GID: These fields contains an unique integer number for the user and the primary group of that user.
  • comment: This field include any specific information about the user. It can be provided by using the --comment/-c flag while creating the user.
  • home_directory: This include the path to the user’s home directory. By default, it is /home/<username>. It can be changed by using the --home-dir / -d while creating the user.
  • default_shell: This field includes the path to the shell used by the user. We can specify any particular shell for the user using --shell or -s flag while creating the user.

Deleting a user in linux

To delete a user, you can enter the following command:

userdel <username>

The above command will permanently remove the user, but its home folder will still remain. To remove the home folder also, you can use the following command:

userdel --remove <username>

Groups in linux

Users on Linux systems are assigned to one or more groups for the following reasons:

  • To share files or other resources with a small number of users
  • Ease of user management
  • Ease of user monitoring
  • Group membership is a perfect solution for large Linux (UNIX) installation.
  • Group membership gives you or your user special access to files and directories or devices which are permitted to that group

In Linux, every user is associated with 2 groups: primary group & secondary group

  • Primary group: This group is the default group from which your account is associated when you log in. Usually, the name of the group is the same as the name of the user.
  • Secondary group: This is any other group you are a member of other than your primary group.

    Note: Each user can belong to exactly one primary group and zero or more secondary groups.

Adding a group in Linux

To add a group in linux, you need to enter the following command:

groupadd <group_name>

This will create a new group with a random group id (GID). To provide a GID of your own, you can specify the -g flag as follows:

groupadd -g 350 <group_name>

To verify this, we can check the /etc/group which contains the information of the Linux groups. The file stores the user information in the following format:

[group_name]:[x]:[GID]:[group_users_list]

Here’s the description of the above format:

  • group_name: This field contains the group name.
  • x: This field contains the encrypted password.
  • GID: This field contains the group id.
  • group_user_list: This field contains the list of users which falls in this group

Add an Existing user to the group

To add an existing user to a single secondary group, use the usermod command with -G flag as follows:

usermod -G <group_name> <username>

Now, to add the user to multiple groups, we can provide multiple comma(,) separated group names as follows:

usermod -G <group1>,<group2>,<group3> <username>

Assign groups to new User

We can also assign primary and secondary groups while create a user by using the -g and -G flags. The -g flag is used to define the primary group, whereas the -G flag is used to provide a list of secondary groups as shown below:

useradd -g <primary_group> -G <s_group1>,<s_group2> <username>

Display User Groups

To display the user groups, simple use the id command as follows:

id <username>

Output:
uid=xxxx(username) gid=xxxx(group_name) groups=xxx(group1),xxx(group2)

You can also view the groups associated with the user by using the groups command as follows:

groups <username>

Output:
<primary_group> : <s_group1> <s_group2> <s_group3>

As you have reached the end, now you’ll be familiar with Linux users and groups. If you have any queries, feel free to contact me at yatharth.sharma@knoldus.in.

Thank you for sticking to the end. If you like this blog, please do show your appreciation by giving thumbs ups and share this blog and give me suggestions on how I can improve my future posts to suit your needs. Follow me to get updates on different technologies

Written by 

Yatharth Sharma is a Software Consultant at Knoldus Software LLP. He has done MCA from Bharati Vidyapeeth Institute of Computer Application and Management, Paschim Vihar. He has a decent knowledge of Java Language and currently working on DevOps technologies/tools like Ansible, Jenkins, Docker, Kubernetes. Apart from programming, he loves listening to rap music.