Introduction |
|
xxi | |
Assessment Test |
|
xxxix | |
Part I Exam 101-500 |
|
1 | (302) |
|
Chapter 1 Exploring Linux Command-Line Tools |
|
|
3 | (64) |
|
Understanding Command-Line Basics |
|
|
4 | (16) |
|
|
4 | (1) |
|
|
5 | (1) |
|
Exploring Your Linux Shell Options |
|
|
5 | (2) |
|
|
7 | (4) |
|
Using Environment Variables |
|
|
11 | (6) |
|
|
17 | (3) |
|
|
20 | (8) |
|
|
20 | (4) |
|
|
24 | (1) |
|
Exploring Basic Text-Editing Procedures |
|
|
24 | (3) |
|
|
27 | (1) |
|
Processing Text Using Filters |
|
|
28 | (17) |
|
|
28 | (3) |
|
File-Transforming Commands |
|
|
31 | (2) |
|
|
33 | (3) |
|
|
36 | (4) |
|
File-Summarizing Commands |
|
|
40 | (5) |
|
Using Regular Expressions |
|
|
45 | (5) |
|
|
45 | (2) |
|
Understanding Basic Regular Expressions |
|
|
47 | (3) |
|
Understanding Extended Regular Expressions |
|
|
50 | (1) |
|
Using Streams, Redirection, and Pipes |
|
|
50 | (11) |
|
Redirecting Input and Output |
|
|
51 | (4) |
|
Piping Data between Programs |
|
|
55 | (1) |
|
|
56 | (4) |
|
|
60 | (1) |
|
|
61 | (1) |
|
|
61 | (1) |
|
|
62 | (5) |
|
Chapter 2 Managing Software and Processes |
|
|
67 | (66) |
|
Looking at Package Concepts |
|
|
68 | (1) |
|
|
69 | (17) |
|
RPM Distributions and Conventions |
|
|
69 | (2) |
|
|
71 | (6) |
|
Extracting Data from RPMs |
|
|
77 | (1) |
|
|
78 | (5) |
|
|
83 | (3) |
|
|
86 | (12) |
|
Debian Package File Conventions |
|
|
87 | (1) |
|
|
87 | (5) |
|
|
92 | (1) |
|
|
93 | (1) |
|
|
94 | (3) |
|
|
97 | (1) |
|
Managing Shared Libraries |
|
|
98 | (4) |
|
|
98 | (1) |
|
|
99 | (1) |
|
|
100 | (1) |
|
Library Management Commands |
|
|
100 | (2) |
|
|
102 | (24) |
|
|
102 | (7) |
|
Employing Multiple Screens |
|
|
109 | (7) |
|
Understanding Foreground and Background Processes |
|
|
116 | (4) |
|
Managing Process Priorities |
|
|
120 | (1) |
|
Sending Signals to Processes |
|
|
121 | (5) |
|
|
126 | (1) |
|
|
127 | (2) |
|
|
129 | (4) |
|
Chapter 3 Configuring Hardware |
|
|
133 | (48) |
|
Configuring the Firmware and Core Hardware |
|
|
134 | (20) |
|
Understanding the Role of Firmware |
|
|
134 | (2) |
|
|
136 | (2) |
|
|
138 | (1) |
|
|
139 | (4) |
|
|
143 | (1) |
|
|
144 | (4) |
|
|
148 | (6) |
|
|
154 | (2) |
|
|
154 | (1) |
|
|
155 | (1) |
|
Automatic Drive Detection |
|
|
155 | (1) |
|
|
156 | (2) |
|
|
156 | (1) |
|
|
157 | (1) |
|
|
158 | (1) |
|
|
158 | (6) |
|
|
158 | (3) |
|
|
161 | (1) |
|
|
162 | (1) |
|
|
163 | (1) |
|
Understanding Filesystems |
|
|
164 | (3) |
|
|
164 | (2) |
|
Maneuvering Around the Filesystem |
|
|
166 | (1) |
|
|
167 | (3) |
|
|
167 | (2) |
|
|
169 | (1) |
|
|
170 | (3) |
|
Manually Mounting Devices |
|
|
170 | (2) |
|
Automatically Mounting Devices |
|
|
172 | (1) |
|
|
173 | (1) |
|
Retrieving Filesystem Stats |
|
|
173 | (1) |
|
|
173 | (1) |
|
|
174 | (1) |
|
|
175 | (2) |
|
|
177 | (4) |
|
|
181 | (64) |
|
Using File Management Commands |
|
|
182 | (36) |
|
|
182 | (4) |
|
Exploring Wildcard Expansion Rules |
|
|
186 | (3) |
|
Understanding the File Commands |
|
|
189 | (10) |
|
Compressing File Commands |
|
|
199 | (3) |
|
|
202 | (11) |
|
|
213 | (5) |
|
|
218 | (3) |
|
|
219 | (1) |
|
|
219 | (1) |
|
|
220 | (1) |
|
Controlling Access to Files |
|
|
221 | (8) |
|
Understanding Permissions |
|
|
221 | (2) |
|
|
223 | (3) |
|
|
226 | (2) |
|
Changing Special Access Modes |
|
|
228 | (1) |
|
|
229 | (10) |
|
|
229 | (2) |
|
Employing Tools to Locate Files |
|
|
231 | (8) |
|
|
239 | (1) |
|
|
239 | (2) |
|
|
241 | (4) |
|
Chapter 5 Booting, Initializing, and Virtualizing Linux |
|
|
245 | (58) |
|
Understanding the Boot Process |
|
|
246 | (3) |
|
|
246 | (1) |
|
Extracting Information about the Boot Process |
|
|
247 | (2) |
|
|
249 | (2) |
|
|
249 | (1) |
|
|
250 | (1) |
|
|
251 | (10) |
|
|
251 | (1) |
|
Using GRUB Legacy as the Boot Loader |
|
|
251 | (4) |
|
Using GRUB 2 as the Boot Loader |
|
|
255 | (4) |
|
Adding Kernel Boot Parameters |
|
|
259 | (1) |
|
Using Alternative Boot Loaders |
|
|
260 | (1) |
|
The Initialization Process |
|
|
261 | (1) |
|
Using the systemd Initialization Process |
|
|
262 | (14) |
|
|
263 | (2) |
|
Focusing on Service Unit Files |
|
|
265 | (3) |
|
Focusing on Target Unit Files |
|
|
268 | (2) |
|
|
270 | (3) |
|
Examining Special systemd Commands |
|
|
273 | (3) |
|
Using the SysV Initialization Process |
|
|
276 | (7) |
|
|
277 | (3) |
|
Investigating SysVinit Commands |
|
|
280 | (3) |
|
|
283 | (1) |
|
|
284 | (2) |
|
|
286 | (9) |
|
Looking at Virtual Machines |
|
|
287 | (4) |
|
|
291 | (2) |
|
Looking at Infrastructure as a Service |
|
|
293 | (2) |
|
|
295 | (1) |
|
|
295 | (3) |
|
|
298 | (5) |
Part II Exam 102-500 |
|
303 | (280) |
|
Chapter 6 Configuring the GUI, Localization, and Printing |
|
|
305 | (48) |
|
|
306 | (1) |
|
Understanding the X11 Architecture |
|
|
307 | (4) |
|
|
308 | (1) |
|
|
309 | (2) |
|
|
311 | (12) |
|
|
311 | (2) |
|
|
313 | (1) |
|
Common Linux Desktop Environments |
|
|
314 | (9) |
|
|
323 | (2) |
|
Using X11 for Remote Access |
|
|
325 | (3) |
|
|
326 | (1) |
|
Tunneling your X11 Connection |
|
|
326 | (2) |
|
Using Remote Desktop Software |
|
|
328 | (5) |
|
|
328 | (2) |
|
|
330 | (2) |
|
|
332 | (1) |
|
|
332 | (1) |
|
Understanding Localization |
|
|
333 | (2) |
|
|
333 | (1) |
|
|
334 | (1) |
|
|
335 | (3) |
|
Installation Locale Decisions |
|
|
335 | (1) |
|
|
336 | (2) |
|
|
338 | (5) |
|
|
338 | (1) |
|
Setting the Time and Date |
|
|
339 | (4) |
|
|
343 | (2) |
|
|
345 | (1) |
|
|
346 | (2) |
|
|
348 | (5) |
|
Chapter 7 Administering the System |
|
|
353 | (70) |
|
Managing Users and Groups |
|
|
354 | (21) |
|
Understanding Users and Groups |
|
|
354 | (1) |
|
Configuring User Accounts |
|
|
355 | (16) |
|
|
371 | (4) |
|
|
375 | (9) |
|
|
375 | (1) |
|
|
376 | (1) |
|
|
377 | (7) |
|
Using Log and Journal Files |
|
|
384 | (19) |
|
Examining the syslog Protocol |
|
|
385 | (2) |
|
Viewing the History of Linux Logging |
|
|
387 | (1) |
|
Logging Basics Using rsyslogd |
|
|
387 | (7) |
|
Journaling with systemd-journald |
|
|
394 | (9) |
|
Maintaining the System Time |
|
|
403 | (13) |
|
Understanding Linux Time Concepts |
|
|
403 | (1) |
|
|
404 | (4) |
|
Understanding the Network Time Protocol |
|
|
408 | (3) |
|
|
411 | (2) |
|
|
413 | (3) |
|
|
416 | (1) |
|
|
416 | (3) |
|
|
419 | (4) |
|
Chapter 8 Configuring Basic Networking |
|
|
423 | (42) |
|
|
424 | (9) |
|
|
424 | (2) |
|
|
426 | (4) |
|
|
430 | (1) |
|
|
431 | (2) |
|
Configuring Network Features |
|
|
433 | (14) |
|
Network Configuration Files |
|
|
433 | (3) |
|
|
436 | (2) |
|
|
438 | (7) |
|
Getting Network Settings Automatically |
|
|
445 | (1) |
|
|
445 | (2) |
|
Basic Network Troubleshooting |
|
|
447 | (5) |
|
|
447 | (1) |
|
|
448 | (1) |
|
|
449 | (3) |
|
Advanced Network Troubleshooting |
|
|
452 | (5) |
|
|
452 | (3) |
|
|
455 | (1) |
|
|
456 | (1) |
|
|
457 | (1) |
|
|
458 | (2) |
|
|
460 | (5) |
|
Chapter 9 Writing Scripts |
|
|
465 | (58) |
|
|
466 | (9) |
|
Global Environment Variables |
|
|
466 | (2) |
|
Local Environment Variables |
|
|
468 | (2) |
|
Setting Local Environment Variables |
|
|
470 | (2) |
|
Setting Global Environment Variables |
|
|
472 | (1) |
|
Locating System Environment Variables |
|
|
472 | (2) |
|
|
474 | (1) |
|
The Basics of Shell Scripting |
|
|
475 | (6) |
|
Running Multiple Commands |
|
|
475 | (1) |
|
|
476 | (1) |
|
|
477 | (1) |
|
|
478 | (1) |
|
|
479 | (2) |
|
|
481 | (8) |
|
|
481 | (1) |
|
Using Variables in Scripts |
|
|
482 | (2) |
|
|
484 | (1) |
|
|
484 | (4) |
|
|
488 | (1) |
|
|
489 | (11) |
|
|
489 | (1) |
|
|
490 | (2) |
|
|
492 | (4) |
|
|
496 | (2) |
|
|
498 | (2) |
|
Running Scripts in Background Mode |
|
|
500 | (3) |
|
Running in the Background |
|
|
501 | (1) |
|
Running Multiple Background Jobs |
|
|
502 | (1) |
|
Running Scripts Without a Console |
|
|
503 | (1) |
|
|
504 | (2) |
|
|
504 | (1) |
|
|
504 | (2) |
|
|
506 | (3) |
|
|
506 | (2) |
|
|
508 | (1) |
|
|
509 | (6) |
|
Scheduling a Job Using the at Command |
|
|
509 | (4) |
|
Scheduling Regular Scripts |
|
|
513 | (2) |
|
|
515 | (1) |
|
|
516 | (2) |
|
|
518 | (5) |
|
Chapter 10 Securing Your System |
|
|
523 | (60) |
|
Administering Network Security |
|
|
524 | (15) |
|
Disabling Unused Services |
|
|
524 | (10) |
|
Using Super Server Restrictions |
|
|
534 | (4) |
|
Restricting via TCP Wrappers |
|
|
538 | (1) |
|
Administering Local Security |
|
|
539 | (14) |
|
|
539 | (4) |
|
|
543 | (4) |
|
|
547 | (2) |
|
Setting Login, Process, and Memory Limits |
|
|
549 | (2) |
|
|
551 | (2) |
|
Exploring Cryptography Concepts |
|
|
553 | (2) |
|
|
553 | (1) |
|
|
554 | (1) |
|
|
555 | (1) |
|
|
555 | (12) |
|
Exploring Basic SSH Concepts |
|
|
555 | (3) |
|
|
558 | (2) |
|
|
560 | (1) |
|
Authenticating with SSH Keys |
|
|
561 | (3) |
|
Authenticating with the Authentication Agent |
|
|
564 | (1) |
|
|
565 | (2) |
|
|
567 | (1) |
|
|
567 | (7) |
|
|
568 | (1) |
|
|
569 | (1) |
|
Encrypting and Decrypting Data |
|
|
570 | (1) |
|
Signing Messages and Verifying Signatures |
|
|
571 | (2) |
|
|
573 | (1) |
|
|
574 | (1) |
|
|
575 | (2) |
|
|
577 | (6) |
Appendix Answers to Review Questions |
|
583 | (36) |
|
Chapter 1: Exploring Linux Command-Line Tools |
|
|
584 | (3) |
|
Chapter 2: Managing Software and Processes |
|
|
587 | (3) |
|
Chapter 3: Configuring Hardware |
|
|
590 | (3) |
|
Chapter 4: Managing Files |
|
|
593 | (4) |
|
Chapter 5: Booting, Initializing, and Virtualizing Linux |
|
|
597 | (4) |
|
Chapter 6: Configuring the GUI, Localization, and Printing |
|
|
601 | (4) |
|
Chapter 7: Administering the System |
|
|
605 | (3) |
|
Chapter 8: Configuring Basic Networking |
|
|
608 | (3) |
|
Chapter 9: Writing Scripts |
|
|
611 | (4) |
|
Chapter 10: Securing Your System |
|
|
615 | (4) |
Index |
|
619 | |