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
sudo adduser alice
sudo adduser bob
Create a new group called
sudo addgroup devs
Create a directory and a file for testing:
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
sudo groupadd developers
This command will create a new group called "developers."
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
Or you can look at the
How to Add and Remove Users from Groups
Adding Users to a Group
bob to the
sudo usermod -aG devs alice
sudo usermod -aG devs bob
Removing Users from a Group
alice from the
sudo gpasswd -d alice devs
Why Do We Need Groups? What Purpose Do They Solve?
Simplified Permission Management: Instead of setting file permissions for individual users, you can set them for a group.
Resource Sharing: Groups make it easier to share resources like files and directories among multiple users.
Role-based Access Control (RBAC): Groups can represent roles, making it easier to manage users with similar responsibilities.
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
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
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.