Skip to main content

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:

  1. groupname: Group name
  2. password: x (in /etc/gshadow, rarely used)
  3. GID: Group ID
  4. 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 newgrp temporarily
# 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