Lesson  in  Test Linux for DevOps Engineers

Introduction to Users and Groups

Understand fundamental concepts of users and groups in Linux, and the superuser (root).

User and Group Concepts

🎯 Learning Objective

Master Linux user and group management fundamentals, understanding how the system identifies users, manages permissions, and organizes access through groups.

📚 Concept Introduction

Every time you interact with a Linux system, you're doing so as a specific user. The system needs to know who you are to decide what you're allowed to do - which files you can read, which commands you can run, and which areas of the system you can access.

Think of it like a large office building where everyone has an ID badge. Your badge determines which floors you can access, which rooms you can enter, and what equipment you can use. Linux user and group systems work similarly, providing a comprehensive identity and access management framework.


👤 User Accounts: Digital Identity

◆ Understanding User Accounts

In Linux, everything happens under the context of a user account. Whether you're reading a file, starting a program, or connecting over the network, Linux always asks "who is doing this?" before deciding whether to allow the action.

A user account serves several critical functions:

  • Identity: A unique name that distinguishes you from other users
  • Authentication: Verification that you are who you claim to be (through passwords, keys, etc.)
  • Authorization: Determining what you're allowed to do based on your identity
  • Accountability: Tracking what actions were performed by which user

Each account has a unique username like moksha, webserver, or backup-service. Linux systems typically have both human users (people who log in) and service accounts (programs that need to run with specific permissions).

🔢 User ID (UID): The Real Identity

◆ How Linux Really Sees Users

While humans prefer names like "moksha" or "krida", Linux internally identifies every user by a unique number called the User ID (UID). This numeric system makes permission checking fast and consistent.

The UID system follows a logical pattern:

  • UID 0 is always reserved for the superuser (root)
  • UIDs 1–999 are typically used for system users (services and programs)
  • UIDs 1000+ are assigned to regular users (humans who log in)

This separation is intentional and important. System services run under low-numbered UIDs with limited permissions, while human users get higher numbers. If a service gets compromised, the damage is contained because it doesn't have the same privileges as human administrators.

🔐 The Superuser: Ultimate System Access

◆ Understanding Root Privileges

The user with UID 0, universally known as root, is the superuser with complete control over the system. Think of root as having the master key that opens every door in the building.

The root user has unlimited privileges:

  • Can read, modify, or delete any file on the system
  • Can change any system setting or configuration
  • Can manage any user account or running process
  • Can install or remove software system-wide

This immense power comes with great responsibility. A single mistake as root can break the entire system. That's why the golden rule is: use regular user accounts for everyday tasks, and only switch to root when you absolutely need those elevated privileges.

👥 Groups: Shared Access Management

◆ Understanding Groups for Team Permissions

Groups solve a common problem: how do you give the same permissions to multiple users without managing each person individually? Instead of setting up permissions for every single user, you create groups and assign permissions to the group. Anyone in that group automatically inherits those permissions.

Think of groups like departments in a company:

  • The "accounting" group has access to financial files
  • The "marketing" group can modify website content
  • The "administrators" group can change system settings

Users can belong to multiple groups, just like an employee might be part of both the "accounting" department and the "safety committee."

Every user has:

  • One primary group (usually matches their username)
  • Zero or more supplementary groups for additional access
Note

Example: The group developers has read access to application logs, while administrators has write access to configuration files. When someone joins the development team, you simply add them to the developers group rather than setting up individual permissions.

🆔 Group ID (GID): Numeric Group Management

◆ How Linux Tracks Groups

Just like users have UIDs, every group has a numeric Group ID (GID) for internal system management. This numeric approach ensures groups work consistently across different systems.

The GID system follows a similar pattern to UIDs:

  • GID 0 is typically the group for root
  • System groups (for services and programs) usually have lower GIDs
  • User-created groups typically start from 1000+

📁 System Files: The Identity Database

◆ Where User and Group Information Lives

Linux stores all user and group information in plain text files that act as the system's identity database. Understanding these files helps you troubleshoot permission issues and understand how the system works.

Two key files contain this information:

  • /etc/passwd – Contains user accounts, UIDs, home directories, and default shells
  • /etc/group – Contains group names, GIDs, and group membership lists

These files are critical to system operation. While you can view them directly, it's always better to use proper user and group management commands rather than editing them manually.

📋 Essential Command Reference

ConceptPurposeKey Point
UID 0Root superuser identifierUltimate system access
UIDs 1-999System user accountsService isolation and security
UIDs 1000+Regular user accountsHuman operators and developers
Primary GroupDefault user groupFile ownership and permissions
Secondary GroupsAdditional access groupsRole-based team permissions
/etc/passwdUser account databaseUser management and troubleshooting
/etc/groupGroup membership databaseGroup management and access control

💡 Key Takeaways

User accounts provide the foundation for Linux security through identity, authentication, and authorization. The root user (UID 0) has unlimited system privileges and should be used carefully. Groups enable efficient permission management by allowing you to assign access to roles rather than individuals. Understanding the numeric UID/GID system and the /etc/passwd and /etc/group files helps you troubleshoot access issues and manage multi-user systems effectively.

Identifying User and Group Information

🎯 Learning Objective

Master user identity verification and group membership analysis to troubleshoot permission issues, understand access contexts, and effectively manage user accounts in Linux systems.

📚 Concept Introduction

When troubleshooting permission problems or working in multi-user environments, one of the first questions you need to answer is "Who does the system think I am?" Your identity determines everything - which files you can access, which commands you can run, and what groups give you additional privileges.

Think of it like checking your ID badge when entering different areas of a building. Sometimes you need to verify not just your name, but also which departments you belong to and what level of access you have. Linux provides several commands to help you understand your current identity and context.


👤 Basic Identity: Who Am I?

◆ Checking Your Current Identity

The simplest identity question is often the most important: "What username am I currently using?" This becomes crucial when you're switching between different user accounts, working on remote systems, or using privilege escalation tools.

Simple identity check:

whoami

This command reveals your current username - the identity Linux uses for all permission decisions. It's particularly valuable when:

  • You've used sudo or other tools to switch users and need to confirm your current context
  • You're working on multiple systems and need to verify which account you're using

🆔 Detailed Identity: Understanding IDs and Groups

◆ The Complete Identity Picture

While usernames are convenient for humans, Linux makes all permission decisions based on numeric identifiers. The id command reveals the numbers behind your identity and shows all the groups that contribute to your access privileges.

Complete identity analysis:

id

Example output:

uid=1001(laborant) gid=1001(laborant) groups=1001(laborant),27(sudo),100(users)

Understanding this information:

  • uid=1001(laborant) - Your numeric user ID and username
  • gid=1001(laborant) - Your primary group ID and name
  • groups=... - All groups you belong to, including supplementary groups

This detailed view helps you understand exactly what permissions you have and why certain operations succeed or fail.

◆ Focused Identity Queries

Sometimes you need specific pieces of identity information rather than the full picture. The id command offers targeted options for different scenarios:

FlagFunctionUse Case
-uShow UID onlyCheck for root privileges in scripts
-gShow primary GID onlyGet default group for file operations
-GShow all GIDsList all numeric group memberships
-unShow username onlyAlternative to whoami
-gnShow primary group nameGet readable group information
id [user]Show another user's infoCheck service account permissions

◆ Practical examples

Get your numeric user ID:

id -u

This is commonly used in scripts to check for root privileges: [ "$(id -u)" -eq 0 ] tests whether you're running as root (UID 0).

Get your primary group ID:

id -g

Get all group IDs numerically:

id -G

Why numeric IDs matter: These numbers work consistently across different systems. Even if usernames vary between systems, the numeric permissions remain the same.

👥 Group Membership: Understanding Access Rights

◆ Viewing Your Groups

Groups are how Linux grants access to shared resources and administrative functions. Understanding which groups you belong to helps explain why you can or cannot access certain files and commands.

View your group memberships:

groups

Example output:

laborant sudo users

This simple list shows all groups you belong to, in a readable format that's easy to understand at a glance.

◆ Understanding Group Significance

Each group in your membership list grants specific capabilities. Here are some common groups and what they typically allow:

  • sudo - Ability to use sudo for administrative tasks
  • docker - Access to Docker daemon and containers

Checking other users' groups:

groups root

This helps you understand what permissions other users or service accounts have, which is useful for troubleshooting and security analysis.

🧑‍💻 Session Information: Who Else Is Here?

◆ Understanding System Activity

Linux systems often have multiple users logged in simultaneously. Understanding who else is active helps with coordination, security awareness, and troubleshooting issues that might be caused by concurrent activity.

See all logged-in users:

who

Example output:

laborant tty1 2024-12-01 10:32

This shows the username, terminal type, and login time for each active session. It's your window into system activity.

◆ Advanced Session Information

The who command offers several useful options for different monitoring needs:

FlagFunctionUse Case
whoShow all logged-in usersBasic session overview
who am iShow your session infoGet your specific login details
who -bShow last boot timeCheck system uptime information
who -uShow idle timeSee how long users have been inactive
who -HShow column headersBetter formatted output

Complete activity overview:

w

The w command is particularly powerful, showing:

  • Who is logged in and from where
  • What each user is currently running
  • Login times and how long users have been idle
  • Current system load averages

📋 Essential Command Reference

CommandPurposeCommon Use Case
whoamiCurrent usernameVerify identity in scripts and remote sessions
idComplete identity infoFull permission context and troubleshooting
id -uNumeric UID onlyCheck for root access in automation
groupsGroup membershipsUnderstand available permissions
whoActive sessionsSystem coordination and security monitoring
wDetailed user activityPerformance analysis and resource tracking

💡 Key Takeaways

Identity verification is fundamental to Linux system management and troubleshooting. The whoami and id commands help you understand your current context and permissions. Group memberships through the groups command explain what resources you can access. Session awareness via who and w provides insight into system activity and helps with coordination and security monitoring. Understanding these identity concepts is essential for effective permission troubleshooting and multi-user system management.

Previous lesson
Managing Processes
Next lesson
File Permissions