What does the CompTIA Linux+ exam cover?
The CompTIA Linux+ XK0-005 exam covers system management, security, scripting and containers, and troubleshooting for Linux environments. It validates skills in managing Linux systems, configuring services, securing systems, writing shell scripts, and working with containers. The exam costs $369 USD with a passing score of 720 out of 900 and requires approximately 12 months of Linux administration experience.
The CompTIA Linux+ XK0-005 is the industry-recognized Linux administration certification that validates the skills required to manage Linux systems across enterprise environments. Linux powers the majority of the world's servers, cloud infrastructure, and containerized workloads, making Linux administration skills essential for system administrators, DevOps engineers, and cloud professionals.
Unlike Red Hat's RHCSA/RHCE which focus on RHEL, Linux+ is distribution-neutral and covers concepts applicable across Debian/Ubuntu, Red Hat/CentOS/AlmaLinux, SUSE, and other major distributions. The exam costs $369 USD and requires a passing score of 720 out of 900.
Exam Overview
| Detail | Information |
|---|---|
| Exam Code | XK0-005 |
| Full Name | CompTIA Linux+ |
| Number of Questions | Maximum 90 |
| Time Limit | 90 minutes |
| Passing Score | 720/900 |
| Cost | $369 USD |
| Prerequisites | 12 months Linux admin experience recommended |
| Validity | 3 years |
The exam covers four domains:
- System management (32%)
- Security (21%)
- Scripting, containers, and automation (19%)
- Troubleshooting (28%)
"Linux+ tests whether you can actually administer Linux systems, not just recite commands. The performance-based questions put you in a live terminal and ask you to accomplish specific tasks -- configure a service, troubleshoot a network issue, write a script. Candidates who have used Linux daily will find these questions straightforward; candidates who have only studied from books will struggle." -- Linux+ certified administrator community
Domain 1: System Management (32%)
Linux File System Hierarchy
The Linux Filesystem Hierarchy Standard (FHS) defines key directories:
| Directory | Contents |
|---|---|
/ |
Root of the filesystem |
/bin, /sbin |
Essential user and system binaries |
/etc |
System configuration files |
/home |
User home directories |
/var |
Variable data (logs, spools, databases) |
/tmp |
Temporary files (cleared on reboot) |
/proc |
Virtual filesystem exposing kernel data |
/dev |
Device files |
/mnt, /media |
Mount points for filesystems |
/usr |
Secondary hierarchy for user programs |
Package Management
Debian/Ubuntu package management (APT):
apt update # Update package index
apt install nginx # Install package
apt remove nginx # Remove package
apt upgrade # Upgrade all installed packages
dpkg -l # List installed packages
dpkg -i package.deb # Install local .deb file
Red Hat/CentOS package management (DNF/YUM):
dnf install httpd # Install package
dnf remove httpd # Remove package
dnf update # Update all packages
rpm -qa # List all installed RPMs
rpm -ivh package.rpm # Install local .rpm file
Process Management
ps aux # List all processes
top / htop # Real-time process monitoring
kill -9 <PID> # Force kill process
nice -n 10 <command> # Start process with lower priority
renice 10 -p <PID> # Change priority of running process
systemctl status nginx # Check service status
systemctl start/stop/restart nginx # Manage service
systemctl enable nginx # Enable service at boot
journalctl -u nginx # View service logs
Storage Management
Disk partitioning and filesystems:
fdisk /dev/sdb # Partition disk (MBR)
gdisk /dev/sdb # Partition disk (GPT/GUID)
mkfs.ext4 /dev/sdb1 # Create ext4 filesystem
mkfs.xfs /dev/sdb2 # Create XFS filesystem
mount /dev/sdb1 /mnt/data # Mount filesystem
umount /mnt/data # Unmount filesystem
df -h # Show disk space usage
du -sh /var/log # Show directory size
/etc/fstab: Configuration file defining filesystems to mount at boot. Each line specifies device, mount point, filesystem type, options, dump, and fsck order.
LVM (Logical Volume Manager): Provides flexible storage management with thin provisioning, snapshots, and online resizing.
Domain 2: Security (21%)
User and Group Management
useradd -m -s /bin/bash username # Create user with home directory
usermod -aG sudo username # Add user to sudo group
passwd username # Set user password
userdel -r username # Delete user and home directory
groupadd developers # Create group
id username # Show user ID and group membership
File Permissions
Permission notation:
r= read (4),w= write (2),x= execute (1)-rwxr-xr--= owner rwx, group r-x, others r--- Numeric: 754 means owner=7(rwx), group=5(r-x), others=4(r--)
chmod and chown:
chmod 644 file.txt # Set permissions numerically
chmod u+x script.sh # Add execute for owner symbolically
chown user:group file.txt # Change owner and group
chown -R user:group /directory # Recursive ownership change
SUID, SGID, and Sticky Bit:
- SUID (4000): Execute file with owner's permissions (e.g.,
passwdruns as root) - SGID (2000): Files created in directory inherit directory's group
- Sticky bit (1000): Only file owner can delete file in shared directory (e.g.,
/tmp)
SSH Security
ssh-keygen -t ed25519 # Generate SSH key pair
ssh-copy-id user@server # Copy public key to server
ssh -i ~/.ssh/id_ed25519 user@server # Connect using specific key
sshd_config security settings:
PermitRootLogin no: Prevent direct root loginPasswordAuthentication no: Require key-based authenticationAllowUsers user1 user2: Restrict which users can SSHPort 2222: Non-standard port to reduce automated scanning
Firewall Management
iptables (traditional):
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -j DROP
iptables -L -v # List rules with counters
firewalld (Red Hat/CentOS):
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all
ufw (Ubuntu):
ufw allow 22/tcp
ufw enable
ufw status verbose
Domain 3: Scripting, Containers, and Automation (19%)
Bash Scripting
Essential bash scripting concepts for Linux+:
#!/bin/bash
# Variables
NAME="World"
echo "Hello, $NAME"
# Conditionals
if [ -f "/etc/hosts" ]; then
echo "File exists"
elif [ -d "/tmp" ]; then
echo "Directory exists"
else
echo "Neither"
fi
# Loops
for service in nginx apache mysql; do
systemctl status $service
done
# Functions
backup_directory() {
local DIR=$1
tar -czf "${DIR}_backup.tar.gz" "$DIR"
echo "Backed up $DIR"
}
backup_directory /var/www
Docker and Container Management
docker pull nginx # Download image
docker run -d -p 80:80 nginx # Run container
docker ps # List running containers
docker exec -it <id> bash # Shell into container
docker build -t myapp:1.0 . # Build image from Dockerfile
docker stop <id> # Stop container
docker rm <id> # Remove container
Dockerfile basics:
FROM ubuntu:22.04
RUN apt update && apt install -y nginx
COPY index.html /var/www/html/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
Domain 4: Troubleshooting (28%)
Network Troubleshooting
ip addr show # Show interface IP addresses
ip route show # Show routing table
ss -tuln # Show listening ports
ping -c 4 8.8.8.8 # Test ICMP connectivity
traceroute 8.8.8.8 # Trace network path
curl -I https://example.com # Test HTTP connectivity
dig example.com # DNS lookup
nslookup example.com # Alternative DNS lookup
netstat -tuln # Legacy: show listening sockets
tcpdump -i eth0 port 80 # Capture network traffic
Log Analysis
cat /var/log/syslog # System log (Debian/Ubuntu)
cat /var/log/messages # System log (Red Hat)
journalctl -f # Follow system journal in real time
journalctl --since "1 hour ago" # Recent journal entries
tail -f /var/log/nginx/error.log # Follow application log
grep "ERROR" /var/log/app.log # Filter log for errors
Common Troubleshooting Scenarios
| Symptom | Investigation Step | Common Cause |
|---|---|---|
| Service not starting | systemctl status service then journalctl -u service |
Configuration error or port conflict |
| Cannot connect to service | `ss -tuln | grep port` and check firewall |
| Disk full | df -h and du -sh /* |
Log files grown; temp files accumulated |
| High CPU | top then ps aux --sort=-%cpu |
Runaway process or resource contention |
| Permission denied | ls -la file/directory and check user context |
Wrong permissions or SELinux/AppArmor |
Frequently Asked Questions
How does Linux+ compare to RHCSA? Linux+ is vendor-neutral and multiple-choice/performance based, testing general Linux concepts across distributions. RHCSA (Red Hat Certified System Administrator) is entirely hands-on, requiring you to complete administrative tasks in a live RHEL environment. RHCSA is more respected in Red Hat enterprise environments. Linux+ is more appropriate for multi-distribution environments and for candidates who do not primarily work with RHEL.
What Linux distribution should I use to study for Linux+? Any modern Linux distribution is appropriate for Linux+ study. Ubuntu is the most beginner-friendly and widely documented. AlmaLinux or Rocky Linux (RHEL-compatible free alternatives) expose you to RPM-based systems. Using both an Ubuntu VM and an AlmaLinux VM covers the major package management differences tested in the exam.
How much command-line experience is needed for Linux+? Linux+ requires practical command-line ability, not just theoretical knowledge. You should be comfortable navigating the filesystem, managing files and directories, editing configuration files with vim or nano, managing services with systemctl, and writing simple bash scripts. Candidates who have used Linux only through graphical interfaces typically need additional command-line practice before taking the exam.
References
- CompTIA. (2025). CompTIA Linux+ XK0-005 Exam Objectives. https://www.comptia.org/certifications/linux
- Rothwell, R. (2023). CompTIA Linux+ Study Guide. Sybex.
- Nemeth, E., Snyder, G., & Hein, T. (2017). UNIX and Linux System Administration Handbook (5th ed.). Pearson.
- The Linux Documentation Project. (2025). Linux Filesystem Hierarchy Standard. https://www.pathname.com/fhs/
- Ubuntu Documentation. (2025). Ubuntu Server Guide. https://ubuntu.com/server/docs
- Red Hat. (2025). RHEL 9 System Administrator's Guide. https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/
