CompTIA Linux+ Certification All-in-One Exam Guide, Second Edition (Exam XK0-005)
By Ted Jordan and Sandor Strohmayer
Contents:
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiii
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxv
Chapter 1 An Introduction to Linux and a Pre-Assessment Exam . . . . . . . . . . . . . 1
A Brief History of Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Batch Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
MULTICS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Linux Operating System Structure . . . . . . . . . . . . . . . . . . . . . . . . . 4
Kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Operating System Software . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Application Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Linux Distributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Distribution Differences . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Linux Derivatives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Common Linux Implementations . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Linux on the Desktop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Linux on the Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Mobile Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Linux and Virtualization . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Linux and Cloud Computing . . . . . . . . . . . . . . . . . . . . . . . . 16
Embedded Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Chapter Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Pre-Assessment Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Quick Answer Key . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
In-Depth Answer Explanations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Analyzing Your Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Chapter 2 Using the vi Text Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53
The Role and Function of the vi Text Editor . . . . . . . . . . . . . . . . . 53
Editing Text Files in vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Opening Files in vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
The vi Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Working in Normal Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Working in Command-Line Mode . . . . . . . . . . . . . . . . . . . . 59
Exercise 2-1: Using the vi Editor . . . . . . . . . . . . . . . . . . . . 61
Editing Text Files in nano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Command Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Configuration Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Chapter Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Chapter 3 Working with the Linux Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71
What Is a Shell? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Configuring the Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
The Life of a Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Managing Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Configuring Aliases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Setting Up the Local Environment . . . . . . . . . . . . . . . . . . . . . . . . . 76
Locale Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Character Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
An ASCII Primer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
A Unicode Primer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Setting Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
The date Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
The /usr/share/zoneinfo/ and /etc/localtime Files . . . . . . . . . . . . . . . . . . . . . 80
The hwclock Command . . . . . . . . . . . . . . . . . . . . . . . . . . 81
The timedatectl Command . . . . . . . . . . . . . . . . . . . . . 81
Bash Configuration Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Login Script Order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
The source Command . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Exercise 3-1: Working with Variables, Parameters, and Aliases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Redirection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
File Descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Redirect stdin with < . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Redirect stdout with > and >> . . . . . . . . . . . . . . . . . . . . . . . 88
Redirect stderr with 2> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Combining stdout and stderr . . . . . . . . . . . . . . . . . . . . . . . . . 90
Send Data to a Command Using a Pipe . . . . . . . . . . . . . . . . . 90
Exercise 3-2: Redirection Hands-on Project . . . . . . . . . . . . . 91
Chapter Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Chapter 4 Managing Linux Users and Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . .99
Understanding Linux Users and Groups . . . . . . . . . . . . . . . . . . . . . 99
Linux User Accounts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Displaying User and Group IDs . . . . . . . . . . . . . . . . . . . . . . 104
Creating and Managing User Accounts from the Command Line . . . 106
Provisioning New Users with useradd . . . . . . . . . . . . . . . . 106
Exercise 4-1: Managing User Accounts from the Command Line . . . . . . . . . . . . . . . . . . . . . . . . . 110
Provisioning New Workgroups with groupadd . . . . . . . . . 113
Exercise 4-2: Managing Groups from the Command Line . . . 114
Chapter Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Chapter 5 Managing Linux Files and Directories . . . . . . . . . . . . . . . . . . . . . . . . . .121
Understanding the Filesystem Hierarchy Standard . . . . . . . . . . . . . 121
Navigating the Linux Filesystem . . . . . . . . . . . . . . . . . . . . . . 123
Viewing Directory Contents with ls . . . . . . . . . . . . . . . . . . 125
Exercise 5-1: Navigating the Filesystem . . . . . . . . . . . . . . . . 126
Managing Linux Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Files, Filenames, and Inodes . . . . . . . . . . . . . . . . . . . . . . . . . 127
Creating and Validating Files with touch and stat . . . . . . 128
Soft and Hard Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Creating New Directories with mkdir . . . . . . . . . . . . . . . . . 133
Determining the File Type . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Viewing File Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Deleting Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Copying and Moving Files . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Exercise 5-2: Managing Files and Directories . . . . . . . . . . . . 136
Finding Files in the Linux Filesystem . . . . . . . . . . . . . . . . . . . . . . . 139
Using find to Search for Files . . . . . . . . . . . . . . . . . . . . . . . 139
Using xargs to Run Commands from Standard Input . . . . 141
Using locate to Find Files . . . . . . . . . . . . . . . . . . . . . . . . . 142
Understanding Commands and Precedence . . . . . . . . . . . . . . . . . . 143
Creating Aliases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Creating and Using Functions . . . . . . . . . . . . . . . . . . . . . . . . 144
Using Builtin Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Using External Commands . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Exercise 5-3: Finding Files . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Finding Content Within Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Using grep to Search Within Files . . . . . . . . . . . . . . . . . . . . 147
Using egrep to Search Within Files . . . . . . . . . . . . . . . . . . 148
Exercise 5-4: Using grep . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Chapter Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Chapter 6 Managing Ownership and Permissions . . . . . . . . . . . . . . . . . . . . . . . .159
Managing File Ownership . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Viewing Default File Permissions and Ownership . . . . . . . . . 160
Managing Ownership from the Command Line . . . . . . . . . . 161
Exercise 6-1: Managing Ownership . . . . . . . . . . . . . . . . . . . 162
Managing File and Directory Permissions . . . . . . . . . . . . . . . . . . . . 163
How Permissions Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Managing Permissions from the Command Line . . . . . . . . . . 165
Exercise 6-2: Managing Permissions . . . . . . . . . . . . . . . . . . . 168
Working with Default Permissions . . . . . . . . . . . . . . . . . . . . 169
Working with Special Permissions . . . . . . . . . . . . . . . . . . . . . 171
Exercise 6-3: Managing Default and Special Permissions . . . 173
Configuring File Attributes and Access Control Lists . . . . . . . . . . . 174
File Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
File Access Control Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Chapter Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Chapter 7 Managing Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .181
An Overview of Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
The Master Boot Record . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
The GUID Partition Table . . . . . . . . . . . . . . . . . . . . . . . . . . 183
The Device Naming Conventions . . . . . . . . . . . . . . . . . . . . . 184
Viewing Disk Partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Creating Partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Partition Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
fdisk Partitioning Utility . . . . . . . . . . . . . . . . . . . . . . . . . . 189
parted Partitioning Utility . . . . . . . . . . . . . . . . . . . . . . . . . 192
gdisk Partitioning Utility . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Block Device Encryption . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Creating Filesystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Available Filesystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Building a Filesystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Mounting a Filesystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Mounting Filesystems Automatically at Boot . . . . . . . . . . . . . 204
Unmounting a Partition with umount . . . . . . . . . . . . . . . . . 206
Managing Linux Filesystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Using df to Verify Free Disk Space . . . . . . . . . . . . . . . . . . . . 207
Using du to Verify Directory Usage . . . . . . . . . . . . . . . . . . . . 208
Reporting Filesystem Status Using dumpe2fs . . . . . . . . . . . 209
Verifying XFS Filesystems Using xfs_admin . . . . . . . . . . . 209
Checking the Filesystem Integrity . . . . . . . . . . . . . . . . . . . . . 210
Managing Quotas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Editing /etc/fstab to Set Up Quotas . . . . . . . . . . . . . . . 211
Creating Quota Database Files . . . . . . . . . . . . . . . . . . . . . . . 212
Assigning a Quota to Users and Groups . . . . . . . . . . . . . . . . 212
Exercise 7-1: Managing Linux Partitions . . . . . . . . . . . . . . . . 213
Chapter Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Chapter 8 Configuring Volume Management . . . . . . . . . . . . . . . . . . . . . . . . . . . .223
Implementing Logical Volume Management . . . . . . . . . . . . . . . . . . 223
LVM Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
LVM Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
LVM Snapshots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Extending LVMs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Creating Archives and Performing Compression . . . . . . . . . . . . . . . 229
Selecting a Backup Medium . . . . . . . . . . . . . . . . . . . . . . . . . 229
Selecting a Backup Strategy . . . . . . . . . . . . . . . . . . . . . . . . . . 230
Linux Backup and Compression Utilities . . . . . . . . . . . . . . . . 231
Exercise 8-1: Backing Up Data . . . . . . . . . . . . . . . . . . . . . . . 235
Enabling Redundant Array of Independent Disks . . . . . . . . . . . . . . 235
Configuring Software RAID . . . . . . . . . . . . . . . . . . . . . . . . . 238
Verifying RAID Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Exercise 8-2: Configuring RAID and Logical Volumes . . . . . 239
Chapter Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Chapter 9 Managing Linux Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .249
Understanding Linux Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
Types of Linux Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
User Processes Versus System Processes . . . . . . . . . . . . . . . . . 250
How Linux Processes Are Loaded . . . . . . . . . . . . . . . . . . . . . 252
Managing Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
Starting System Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Viewing Running Processes . . . . . . . . . . . . . . . . . . . . . . . . . . 256
Prioritizing Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
Managing Foreground and Background Processes . . . . . . . . . 264
Ending a Running Process . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Keeping a Process Running After Logout . . . . . . . . . . . . . . . . 268
Exercise 9-1: Working with Linux Processes . . . . . . . . . . . . . 269
Scheduling Jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Using the at Daemon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Using the cron Daemon . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Exercise 9-2: Scheduling Linux Processes . . . . . . . . . . . . . . . 277
Using systemd timers . . . . . . . . . . . . . . . . . . . . . . . . . 278
Chapter Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Chapter 10 Managing Linux Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .289
Using a Package Manager to Install Applications . . . . . . . . . . . . . . . 289
Installing Applications on Red Hat with RPM . . . . . . . . . . . . . . . . 290
RPM Package Naming Conventions . . . . . . . . . . . . . . . . . . . 291
RPM Command Options . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
RPM Application Installation . . . . . . . . . . . . . . . . . . . . . . . . 292
RPM Application Upgrades . . . . . . . . . . . . . . . . . . . . . . . . . . 293
RPM Application Removal . . . . . . . . . . . . . . . . . . . . . . . . . . 294
RPM Application Verification . . . . . . . . . . . . . . . . . . . . . . . . 294
RPM Database Querying . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
RPM Conversion to CPIO . . . . . . . . . . . . . . . . . . . . . . . . . . 296
Exercise 10-1: Practicing Package Manipulation with RPM . . . .297
Installing RPMs with YUM, DNF, and ZYpp . . . . . . . . . . . . . . . . . 298
The YUM Package Manager . . . . . . . . . . . . . . . . . . . . . . . . . 298
Exercise 10-2: Practicing Package Manipulation with YUM . . . 303
The DNF Package Manager . . . . . . . . . . . . . . . . . . . . . . . . . 303
The ZYpp Package Manager . . . . . . . . . . . . . . . . . . . . . . . . . 304
Installing Applications on Debian with dpkg . . . . . . . . . . . . . . . . . 306
Debian Package Naming Conventions . . . . . . . . . . . . . . . . . . 306
Managing Applications with dpkg . . . . . . . . . . . . . . . . . . . . 307
Viewing Application Information with apt-cache . . . . . . 308
Installing Applications on Debian with APT . . . . . . . . . . . . . . . . . . 309
Troubleshooting an Application Crash . . . . . . . . . . . . . . . . . . 309
Using Universal Linux App Stores . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Snap Fundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Flatpak Fundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
AppImage Fundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
Installing Applications from Source Code . . . . . . . . . . . . . . . . . . . . 313
Preparing the Installation Files . . . . . . . . . . . . . . . . . . . . . . . . 313
Compiling the Executable . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
Installing the Executable . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
Exercise 10-3: Building Software from Source Code . . . . . . . 316
Uninstalling Software Compiled from Source Code . . . . . . . 317
Managing Shared Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
How Shared Libraries Work . . . . . . . . . . . . . . . . . . . . . . . . . . 318
Managing Shared Library Dependencies . . . . . . . . . . . . . . . . 319
Exercise 10-4: Working with Shared Libraries . . . . . . . . . . . . 321
Chapter Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
Chapter 11 Managing the Linux Boot Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . .331
The BIOS POST Phase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
The Classic BIOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
The Modern UEFI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
The GRUB2 Bootloader Phase . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
Modify the GRUB2 Bootloader . . . . . . . . . . . . . . . . . . . . . . 335
Change a Forgotten root Password . . . . . . . . . . . . . . . . . . . 338
Exercise 11-1: Working with GRUB2 . . . . . . . . . . . . . . . . . . 340
The Kernel Initiation Phase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
System V Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
The Linux Runlevels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
The inittab Startup File . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Shutting Down the System . . . . . . . . . . . . . . . . . . . . . . . . . . 342
The systemd Initialization Phase . . . . . . . . . . . . . . . . . . . . . . . . . 343
systemd Unit Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
Service Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
Targets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Kernel Panic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
Chapter Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Chapter 12 Managing Hardware Under Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . .355
Discovering Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
Displaying the Kernel Ring Buffer with dmesg . . . . . . . . . . 356
Detecting USB Devices with lsusb . . . . . . . . . . . . . . . . . . 358
Detecting PCI Devices with lspci . . . . . . . . . . . . . . . . . . . 359
Managing Kernel Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
Exercise 12-1: Working with Kernel Modules . . . . . . . . . . . . 363
Referencing Kernel and User Space . . . . . . . . . . . . . . . . . . . . . . . . . 364
/sys and sysfs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
udev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
Configuring Hardware Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
lsdev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
lshw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
Exercise 12-2: Discovering Devices . . . . . . . . . . . . . . . . . . . . 381
Configuring Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
Bluetooth Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
Configuring Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
Scanning for Network Devices . . . . . . . . . . . . . . . . . . . . . . . 383
Configuring a Wi-Fi Network . . . . . . . . . . . . . . . . . . . . . . . . 383
Configuring Storage Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
SCSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
SATA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
Optical Drives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
Solid State Drives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
hdparm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
lsscsi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
Printing in Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
Adding Printers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
Printing to a Printer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
Managing Printers and Print Queues . . . . . . . . . . . . . . . . . . . 392
Canceling Print Jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
lpmove . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
Removing a Printer or Printer Class . . . . . . . . . . . . . . . . . . . . 394
Exercise 12-3: Printing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
Chapter Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
Chapter 13 Writing Shell Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .401
Advanced Shell Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
Globbing Wildcard Characters . . . . . . . . . . . . . . . . . . . . . . . 402
Sequencing Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
Command Substitution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
Understanding Shell Script Components . . . . . . . . . . . . . . . . . . . . 404
Defining the Interpreter with #! . . . . . . . . . . . . . . . . . . . . . . 404
Commenting with # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
Defining Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
Reading User Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
Using Positional Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . 407
Using Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
Using Control Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
Expression Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
Testing with Conditionals . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
Using Looping Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
Exercise 13-1: Creating a Basic Shell Script . . . . . . . . . . . . . 416
Processing Text Streams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
The tr Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
The cut Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
The nl Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
The od Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
The sed Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
The awk Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
The sort Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
The split Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
The head Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
The tail Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
The uniq Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
The wc Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
Exercise 13-2: Processing Text Streams . . . . . . . . . . . . . . . . . 431
Chapter Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
Chapter 14 Managing Linux Network Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . .439
Understanding IP Networks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
What Is a Protocol? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
How IPv4 Addresses Work . . . . . . . . . . . . . . . . . . . . . . . . . . 444
How IPv4 Subnet Masks Work . . . . . . . . . . . . . . . . . . . . . . . 446
Configuring Network Addressing Parameters . . . . . . . . . . . . . . . . . 449
Assigning NIC Nomenclature . . . . . . . . . . . . . . . . . . . . . . . . 449
Configuring IPv4 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . 449
Exercise 14-1: Working with Network Interfaces . . . . . . . . . 454
Configuring Routing Parameters . . . . . . . . . . . . . . . . . . . . . . 455
Configuring Name Resolver Settings . . . . . . . . . . . . . . . . . . . 457
Configuring IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
Troubleshooting Network Problems . . . . . . . . . . . . . . . . . . . . . . . . 461
Using a Standardized Troubleshooting Model . . . . . . . . . . . . 461
Using ping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
Using netstat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
Using traceroute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
Using nc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
Using Name Resolution Tools . . . . . . . . . . . . . . . . . . . . . . . . 467
Synchronizing Time on a Network . . . . . . . . . . . . . . . . . . . . 469
Exercise 14-2: Working with Network Commands . . . . . . . . 471
Understanding Network-Based Filesystems . . . . . . . . . . . . . . . . . . . 472
Network File System (NFS) . . . . . . . . . . . . . . . . . . . . . . . . . . 472
Samba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
Chapter Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
Chapter 15 Understanding Network Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .481
Understanding How Encryption Works . . . . . . . . . . . . . . . . . . . . . 482
Symmetric Encryption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482
Asymmetric Encryption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483
Integrity Checking via Hashing . . . . . . . . . . . . . . . . . . . . . . . 484
Implementing Secured Tunnel Networks . . . . . . . . . . . . . . . . . . . . . 485
How SSH Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
Configuring SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
Exercise 15-1: Working with SSH . . . . . . . . . . . . . . . . . . . . 488
Logging In to SSH Without a Password . . . . . . . . . . . . . . . . 490
Exercise 15-2: Configuring Public Key Authentication . . . . . 493
Virtual Private Networks . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
Configuring High-Availability Networking . . . . . . . . . . . . . . . . . . . 497
Network Bridge Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
Network Bonding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
Understanding Single Sign-On . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
RADIUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500
LDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500
Kerberos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500
TACACS+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501
Defending Against Network Attacks . . . . . . . . . . . . . . . . . . . . . . . . 501
Mitigating Network Vulnerabilities . . . . . . . . . . . . . . . . . . . . 502
Implementing a Firewall with firewalld . . . . . . . . . . . . . 504
Exercise 15-3: Implementing Network Security Measures with firewalld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509
Implementing a Firewall with iptables . . . . . . . . . . . . . . 509
Exercise 15-4: Implementing Network Security Measures with iptables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512
Encrypting Files with GPG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513
How GPG Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514
Using GPG to Encrypt Files . . . . . . . . . . . . . . . . . . . . . . . . . 514
Using GPG to Revoke Keys . . . . . . . . . . . . . . . . . . . . . . . . . . 518
Exercise 15-5: Using GPG to Encrypt Files . . . . . . . . . . . . . 520
Chapter Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522
Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
Chapter 16 Securing Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .527
Securing the System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527
Securing the Physical Environment . . . . . . . . . . . . . . . . . . . . 527
Securing Access to the Operating System . . . . . . . . . . . . . . . . 528
Controlling User Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
To Root or Not to Root? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
Implementing a Strong Password Policy . . . . . . . . . . . . . . . . 534
Locking Accounts After Failed Authentications . . . . . . . . . . . 536
Configuring User Limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
Disabling User Login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540
Security Auditing Using find . . . . . . . . . . . . . . . . . . . . . . . 542
Exercise 16-1: Managing User Access . . . . . . . . . . . . . . . . . . 544
Managing System Logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
Configuring Log Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
Using Log Files to Troubleshoot Problems . . . . . . . . . . . . . . . 552
Using Log Files to Detect Intruders . . . . . . . . . . . . . . . . . . . . 555
Enhancing Group and File Security . . . . . . . . . . . . . . . . . . . . . . . . . 556
Implementing SELinux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557
Implementing AppArmor . . . . . . . . . . . . . . . . . . . . . . . . . . . 562
Exercise 16-2: Managing SELinux Contexts . . . . . . . . . . . . . 564
Chapter Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
Chapter 17 Applying DevOps: Automation and Orchestration . . . . . . . . . . . . .573
Orchestration Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573
Orchestration Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575
The Git Revision Control System . . . . . . . . . . . . . . . . . . . . . . . . . . 577
Using Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
Collaborating with Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580
Exercise 17-1: Working with a Git Repository . . . . . . . . . . . 583
Chapter Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585
Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587
Chapter 18 Understanding Virtualization and the Cloud . . . . . . . . . . . . . . . . . . .589
Understanding Virtualization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589
Hypervisors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590
Thin vs. Thick Provisioning . . . . . . . . . . . . . . . . . . . . . . . . . . 591
Virtualization File Formats . . . . . . . . . . . . . . . . . . . . . . . . . . 591
Managing Virtual Machines with virsh . . . . . . . . . . . . . . . 591
Virtual Networking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592
BLOB Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
Virtual Machine Shortcomings . . . . . . . . . . . . . . . . . . . . . . . 594
Understanding Containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
Persistent Volumes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596
Container Markup Languages . . . . . . . . . . . . . . . . . . . . . . . . 596
Managing Containers with Docker and Kubernetes . . . . . . . . . . . . 597
Getting Started with Docker . . . . . . . . . . . . . . . . . . . . . . . . . 598
Deploying an Existing Container Image . . . . . . . . . . . . . . . . 599
Running a Container Image . . . . . . . . . . . . . . . . . . . . . . . . . 599
Configuring Container Persistent Storage . . . . . . . . . . . . . . . 600
Removing Containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601
Cluster Management with Kubernetes . . . . . . . . . . . . . . . . . . 601
Automating Installations with Kickstart . . . . . . . . . . . . . . . . . . . . . 602
Chapter Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602
Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603
Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605
Chapter 19 Troubleshooting and Diagnostics . . . . . . . . . . . . . . . . . . . . . . . . . . . . .607
A Standardized Troubleshooting Model . . . . . . . . . . . . . . . . . . . . . . 607
Troubleshooting Computer Problems . . . . . . . . . . . . . . . . . . . . . . . 608
Verify Hardware Configuration . . . . . . . . . . . . . . . . . . . . . . . 608
Verify CPU Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610
Verify Memory Performance . . . . . . . . . . . . . . . . . . . . . . . . . 611
Exercise 19-1: Working with Swap Space . . . . . . . . . . . . . . . 614
Validate Storage Performance . . . . . . . . . . . . . . . . . . . . . . . . . 614
Validate Other Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617
Troubleshooting Network Problems . . . . . . . . . . . . . . . . . . . . . . . . 620
Verify Network Performance . . . . . . . . . . . . . . . . . . . . . . . . . 621
Validate User Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . 626
Validate the Firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627
Exercise 19-2: Troubleshooting Networking Issues . . . . . . . . 628
Chapter Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631
Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632
Chapter 20 Installing and Configuring Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .635
Designing a Linux Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636
Conducting a Needs Assessment . . . . . . . . . . . . . . . . . . . . . . 636
Selecting a Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637
Checking Hardware Compatibility . . . . . . . . . . . . . . . . . . . . 638
Verifying System Requirements . . . . . . . . . . . . . . . . . . . . . . . 638
Planning the Filesystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639
Selecting Software Packages . . . . . . . . . . . . . . . . . . . . . . . . . . 641
Identifying User Accounts . . . . . . . . . . . . . . . . . . . . . . . . . . . 642
Gathering Network Information . . . . . . . . . . . . . . . . . . . . . . 643
Selecting an Installation Source . . . . . . . . . . . . . . . . . . . . . . . 643
Installing Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646
Exercise 20-1: Installing a Linux System . . . . . . . . . . . . . . . . 646
Configuring the X Window System . . . . . . . . . . . . . . . . . . . . . . . . 649
Configuring the X Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650
Configuring the Display Manager . . . . . . . . . . . . . . . . . . . . . 653
Configuring Accessibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654
Configuring Locale Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656
Configuring Time Zone Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . 657
Configuring Printing with CUPS . . . . . . . . . . . . . . . . . . . . . . . . . . 658
Configuring CUPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658
Configuring E-mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661
Configuring SQL Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663
Configuring Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664
GUID Partition Table Components . . . . . . . . . . . . . . . . . . . 664
IDE Drives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666
Locating a Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666
Chapter Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670
Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671
Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676
Appendix A Objective Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .679
Exam XK0-005 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679
Appendix B About the Online Content . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .699
System Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699
Your Total Seminars Training Hub Account . . . . . . . . . . . . . . . . . . 699
Privacy Notice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699
Single User License Terms and Conditions . . . . . . . . . . . . . . . . . . . 699
TotalTester Online . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701
Other Book Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701
Performance-Based Questions . . . . . . . . . . . . . . . . . . . . . . . . 701
Virtual Machines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702
Videos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702
Technical Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702
Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .703