Skip to main content

Understanding File Owners and Groups

In Linux and Unix-like operating systems, the concept of file owners and groups is fundamental to file security and access control. This article aims to offer an in-depth explanation of these concepts, detailing what groups are, how to manage them, and why they're important. To get the most out of the examples, readers are encouraged to create the following test environment.

Below graph represents some users in a Linux system belonging to multiple groups.

In this graph:

  • Group "Admins" has members "Alice" and "Bob"
  • Group "Devs" has members "Alice" and "Carol"
  • Group "Testers" has members "Bob" and "Carol"

This graph shows that users can belong to multiple groups in a Linux system, illustrating the flexibility and utility of using groups for permission management and resource sharing.

Preparing the Test Environment

To simulate a multi-user environment, let's create two new users and one new group.

Create new users alice and bob:

sudo adduser alice
sudo adduser bob

Create a new group called devs:

sudo addgroup devs

Create a directory and a file for testing:

mkdir test_directory
echo "This is a test file." > test_file.txt

What Are Groups?

A group is essentially a collection of users. Groups make it easier to manage permissions and access to files and directories. They are useful for defining roles and shared resources.

Creating a New Group

To create a new group, use the groupadd command followed by the name of the group:

sudo groupadd developers

This command will create a new group called "developers."

Deleting Groups

To delete a group, you can use the groupdel command. Here's how to delete a group named "obsolete":

sudo groupdel obsolete

How to Check All Available Groups on a System

You can list all the groups on your system using the getent command:

getent group

Or you can look at the /etc/group file:

cat /etc/group

How to Add and Remove Users from Groups

Adding Users to a Group

Add alice and bob to the devs group:

sudo usermod -aG devs alice
sudo usermod -aG devs bob

Removing Users from a Group

Remove alice from the devs group:

sudo gpasswd -d alice devs

Why Do We Need Groups? What Purpose Do They Solve?

  1. Simplified Permission Management: Instead of setting file permissions for individual users, you can set them for a group.

  2. Resource Sharing: Groups make it easier to share resources like files and directories among multiple users.

  3. Role-based Access Control (RBAC): Groups can represent roles, making it easier to manage users with similar responsibilities.

  4. Security: By segregating users into groups, you can restrict access to sensitive files, ensuring that only authorized groups can access them.

How to Check the Owner and the Group of a File

The ls -l command will show you the owner and group of a file or directory:

ls -l test_file.txt

The output will look something like this:

-rw-r--r-- 1 root root 0 Sep 19 12:34 test_file.txt

Here, the owner of the file is root, and the group is also root.

Conclusion

Understanding the concept of file owners and groups is critical for anyone who uses Linux, especially those in sysadmin roles. Groups offer a way to simplify permission management, provide secure access to resources, and ease the burden of system administration. Now that you understand these essentials, you're well on your way to becoming a Linux pro.

What Can You Do Next 🙏😊

If you liked the article, consider subscribing to Cloudaffle, my YouTube Channel, where I keep posting in-depth tutorials and all edutainment stuff for software developers.

YouTube @cloudaffle