Chapter 5.2 - Group Management
Learning Objectives
By the end of this chapter, you will be able to:
- Understand the Linux group system
- Create and delete groups
- Add/remove users from groups
- Understand primary vs secondary groups
- Use groups for permissions
Introduction
Groups allow users to be grouped together to share permissions and resources.
Advantages:
- Shared permissions
- Simplified management
- Controlled access to resources
Types of Groups
Primary Group
Characteristics:
- A user has only one primary group
- Defined in
/etc/passwd(GID) - Automatically created with the user
- Generally the same name as the user
Supplementary Groups
Characteristics:
- A user can belong to multiple groups
- Defined in
/etc/group - Additional permissions
- Access to additional resources
/etc/group File
Format
# Format: groupname:password:GID:members
root:x:0:
users:x:100:user1,user2
developers:x:1001:user1,user3,user4
sudo:x:27:user1,user2
www-data:x:33:
Fields:
- groupname: Group name
- password: x (in /etc/gshadow, rarely used)
- GID: Group ID
- members: List of members (comma-separated)
Create a Group
groupadd
# Simple group
sudo groupadd developers
# With specific GID
sudo groupadd -g 2000 developers
# Check available GID
sudo groupadd -g 2000 developers # Error if exists
# System (GID < 1000)
sudo groupadd -r systemgroup
Modify a Group
groupmod
# Change GID
sudo groupmod -g 2001 developers
# Rename
sudo groupmod -n newname oldname
# Verify
getent group developers
Delete a Group
groupdel
# Delete group
sudo groupdel developers
# Note: Cannot delete if primary group of a user
Manage Members
Add a User
# Add to a group (keep other groups)
sudo usermod -aG developers user1
# -a: append (add, do not replace)
# -G: supplementary groups
# Verify
groups user1
id user1
Remove a User
# Remove from a group (manually)
# Edit /etc/group or use gpasswd
sudo gpasswd -d user1 developers
View Members
# Members of a group
getent group developers
grep developers /etc/group
# Groups of a user
groups user1
id user1
groups # Current user
Primary vs Supplementary Groups
Change Primary Group
# Change primary group
sudo usermod -g developers user1
# Verify
id user1
# uid=1000(user1) gid=1001(developers) groups=1001(developers),1002(sudo)
New Files
Rule:
- New files are created with the user's primary group
- Can be changed with
newgrptemporarily
# Temporarily change effective group
newgrp developers
# Verify
groups # developers becomes first
Useful Commands
getent
# Group information
getent group developers
# All groups
getent group
# Check if group exists
getent group developers && echo "Exists"
id
# User information
id
id user1
# Format: uid=1000(user1) gid=1000(user1) groups=1000(user1),27(sudo),1001(developers)
groups
# Current user's groups
groups
# User's groups
groups user1
Practical Use Cases
Project Group
# Create project group
sudo groupadd projet-alpha
# Add members
sudo usermod -aG projet-alpha dev1
sudo usermod -aG projet-alpha dev2
# Create shared directory
sudo mkdir /srv/projet-alpha
sudo chgrp projet-alpha /srv/projet-alpha
sudo chmod 775 /srv/projet-alpha
# Members can now collaborate
Administrators Group
# Add to sudo group
sudo usermod -aG sudo user1
# Verify
groups user1
# user1 sudo
# Can now use sudo
Summary
In this chapter, you learned:
Groups: User grouping for shared permissions
Types: Primary (one) vs Supplementary (multiple)
Files: /etc/group for configuration
Creation: groupadd
Modification: groupmod
Members: usermod -aG, gpasswd -d
Commands: getent, id, groups
Next Steps
Chapter 5.3: Advanced Permissions
Chapter 5.4: ACL (Access Control Lists)
Chapter created on: December 2024