Acknowledgments |
|
ix | |
Introduction |
|
xxix | |
|
|
1 | (42) |
|
Chapter 1 Starting with Linux |
|
|
3 | (18) |
|
Understanding What Linux Is |
|
|
4 | (2) |
|
Understanding How Linux Differs from Other Operating Systems |
|
|
6 | (1) |
|
|
7 | (9) |
|
Free-flowing UNIX culture at Bell Labs |
|
|
7 | (2) |
|
|
9 | (1) |
|
Berkeley Software Distribution arrives |
|
|
9 | (1) |
|
UNIX Laboratory and commercialization |
|
|
10 | (1) |
|
GNU transitions UNIX to freedom |
|
|
11 | (2) |
|
|
13 | (1) |
|
Linus builds the missing piece |
|
|
13 | (1) |
|
OSI open source definition |
|
|
14 | (2) |
|
Understanding How Linux Distributions Emerged |
|
|
16 | (2) |
|
|
17 | (1) |
|
Understanding Ubuntu and other Debian distributions |
|
|
17 | (1) |
|
Finding Professional Opportunities with Linux Today |
|
|
18 | (2) |
|
Understanding how companies make money with Linux |
|
|
19 | (1) |
|
|
20 | (1) |
|
Chapter 2 Creating the Perfect Linux Desktop |
|
|
21 | (22) |
|
Understanding Linux Desktop Technology |
|
|
22 | (2) |
|
Starting with the GNOME 3 Desktop Live Image |
|
|
24 | (1) |
|
Using the GNOME 3 Desktop |
|
|
25 | (12) |
|
After the computer boots up |
|
|
25 | (1) |
|
Navigating with the mouse |
|
|
25 | (5) |
|
Navigating with the keyboard |
|
|
30 | (1) |
|
Setting up the GNOME 3 desktop |
|
|
31 | (1) |
|
Extending the GNOME 3 desktop |
|
|
31 | (1) |
|
Using GNOME shell extensions |
|
|
32 | (1) |
|
Using the GNOME Tweak Tool |
|
|
33 | (1) |
|
Starting with desktop applications |
|
|
33 | (1) |
|
Managing files and folders with Nautilus |
|
|
33 | (2) |
|
Installing and managing additional software |
|
|
35 | (2) |
|
Playing music with Rhythmbox |
|
|
37 | (1) |
|
Stopping the GNOME 3 desktop |
|
|
37 | (1) |
|
Using the Unity Graphical Shell with the GNOME Desktop |
|
|
37 | (5) |
|
Using the Metacity window manager |
|
|
38 | (2) |
|
Changing GNOME's appearance |
|
|
40 | (1) |
|
|
40 | (1) |
|
|
41 | (1) |
|
Changing panel properties |
|
|
41 | (1) |
|
|
42 | (1) |
|
|
42 | (1) |
|
Part II Becoming a Linux Power User |
|
|
43 | (108) |
|
Chapter 3 Using the Shell |
|
|
45 | (32) |
|
About Shells and Terminal Windows |
|
|
46 | (3) |
|
|
47 | (1) |
|
|
48 | (1) |
|
|
49 | (1) |
|
|
49 | (1) |
|
|
50 | (6) |
|
Understanding command syntax |
|
|
51 | (2) |
|
|
53 | (3) |
|
Recalling Commands Using Command History |
|
|
56 | (5) |
|
|
56 | (2) |
|
|
58 | (1) |
|
|
59 | (2) |
|
Connecting and Expanding Commands |
|
|
61 | (3) |
|
|
62 | (1) |
|
|
62 | (1) |
|
|
63 | (1) |
|
|
63 | (1) |
|
Expanding arithmetic expressions |
|
|
63 | (1) |
|
|
64 | (1) |
|
|
64 | (3) |
|
Creating and using aliases |
|
|
66 | (1) |
|
|
67 | (1) |
|
Creating Your Shell Environment |
|
|
67 | (4) |
|
|
67 | (1) |
|
|
68 | (2) |
|
Adding environment variables |
|
|
70 | (1) |
|
Getting Information about Commands |
|
|
71 | (3) |
|
|
74 | (1) |
|
|
74 | (3) |
|
Chapter 4 Moving Around the Filesystem |
|
|
77 | (20) |
|
Using Basic Filesystem Commands |
|
|
80 | (2) |
|
Using Metacharacters and Operators |
|
|
82 | (4) |
|
Using file-matching metacharacters |
|
|
82 | (2) |
|
Using file-redirection metacharacters |
|
|
84 | (1) |
|
Using brace expansion characters |
|
|
85 | (1) |
|
Listing Files and Directories |
|
|
86 | (4) |
|
Understanding File Permissions and Ownership |
|
|
90 | (4) |
|
Changing permissions with chmod (numbers) |
|
|
91 | (1) |
|
Changing permissions with chmod (letters) |
|
|
92 | (1) |
|
Setting default file permission with umask |
|
|
93 | (1) |
|
|
93 | (1) |
|
Moving, Copying, and Removing Files |
|
|
94 | (1) |
|
|
95 | (1) |
|
|
96 | (1) |
|
Chapter 5 Working with Text Files |
|
|
97 | (20) |
|
Editing Files with vim and vi |
|
|
97 | (8) |
|
|
99 | (1) |
|
|
99 | (1) |
|
Moving around in the text |
|
|
100 | (1) |
|
Deleting, copying, and changing text |
|
|
101 | (1) |
|
|
102 | (1) |
|
|
102 | (1) |
|
|
102 | (1) |
|
Skipping around in the file |
|
|
103 | (1) |
|
|
103 | (1) |
|
|
104 | (1) |
|
Learning more about vi and vim |
|
|
104 | (1) |
|
|
105 | (10) |
|
Using locate to find files by name |
|
|
105 | (2) |
|
Searching for files with find |
|
|
107 | (1) |
|
|
108 | (1) |
|
|
108 | (1) |
|
|
109 | (1) |
|
Finding files by permission |
|
|
109 | (1) |
|
Finding files by date and time |
|
|
110 | (1) |
|
Using "not" and "or" when finding files |
|
|
111 | (1) |
|
Finding files and executing commands |
|
|
112 | (1) |
|
Searching in files with grep |
|
|
113 | (2) |
|
|
115 | (1) |
|
|
115 | (2) |
|
Chapter 6 Managing Running Processes |
|
|
117 | (16) |
|
|
117 | (1) |
|
|
118 | (6) |
|
Listing processes with ps |
|
|
118 | (2) |
|
Listing and changing processes with top |
|
|
120 | (2) |
|
Listing processes with System Monitor |
|
|
122 | (2) |
|
Managing Background and Foreground Processes |
|
|
124 | (2) |
|
Starting background processes |
|
|
124 | (1) |
|
Using foreground and background commands |
|
|
125 | (1) |
|
Killing and Renicing Processes |
|
|
126 | (3) |
|
Killing processes with kill and killall |
|
|
126 | (1) |
|
Using kill to signal processes by PID |
|
|
127 | (1) |
|
Using killall to signal processes by name |
|
|
128 | (1) |
|
Setting processor priority with nice and renice |
|
|
128 | (1) |
|
Limiting Processes with cgroups |
|
|
129 | (2) |
|
|
131 | (1) |
|
|
131 | (2) |
|
Chapter 7 Writing Simple Shell Scripts |
|
|
133 | (18) |
|
Understanding Shell Scripts |
|
|
133 | (16) |
|
Executing and debugging shell scripts |
|
|
134 | (1) |
|
Understanding shell variables |
|
|
135 | (1) |
|
Special shell positional parameters |
|
|
136 | (1) |
|
|
137 | (1) |
|
Parameter expansion in bash |
|
|
137 | (1) |
|
Performing arithmetic in shell scripts |
|
|
138 | (1) |
|
Using programming constructs in shell scripts |
|
|
139 | (1) |
|
The "if...then" statements |
|
|
139 | (3) |
|
|
142 | (1) |
|
|
143 | (1) |
|
The "while...do" and "until...do" loops |
|
|
144 | (1) |
|
Trying some useful text manipulation programs |
|
|
145 | (1) |
|
The global regular expression print |
|
|
145 | (1) |
|
Remove sections of lines of text (cut) |
|
|
145 | (1) |
|
Translate or delete characters (tr) |
|
|
146 | (1) |
|
|
146 | (1) |
|
Using simple shell scripts |
|
|
147 | (1) |
|
|
147 | (1) |
|
|
148 | (1) |
|
|
149 | (1) |
|
|
149 | (2) |
|
Part III Becoming a Linux System Administrator |
|
|
151 | (116) |
|
Chapter 8 Learning System Administration |
|
|
153 | (24) |
|
Understanding System Administration |
|
|
153 | (2) |
|
Using Graphical Administration Tools |
|
|
155 | (3) |
|
Using Cockpit browser-based administration |
|
|
155 | (2) |
|
Using other browser-based admin tools |
|
|
157 | (1) |
|
Invoking Administration Privileges |
|
|
158 | (3) |
|
Becoming root from the shell |
|
|
158 | (1) |
|
Gaining temporary admin access with sudo |
|
|
159 | (2) |
|
Exploring Administrative Commands, Configuration Files, and Log Files |
|
|
161 | (6) |
|
|
161 | (1) |
|
Administrative configuration files |
|
|
162 | (3) |
|
Administrative log files and systemd journal |
|
|
165 | (1) |
|
Using journalctl to view the systemd journal |
|
|
165 | (1) |
|
Managing log messages with rsyslogd |
|
|
166 | (1) |
|
Using Other Administrative Accounts |
|
|
167 | (1) |
|
Checking and Configuring Hardware |
|
|
167 | (7) |
|
|
168 | (3) |
|
Managing removable hardware |
|
|
171 | (1) |
|
Working with loadable modules |
|
|
172 | (1) |
|
|
172 | (1) |
|
|
173 | (1) |
|
|
174 | (1) |
|
|
174 | (1) |
|
|
175 | (2) |
|
Chapter 9 Installing Linux |
|
|
177 | (24) |
|
|
178 | (2) |
|
Installing Ubuntu Desktop |
|
|
180 | (5) |
|
|
185 | (3) |
|
Understanding Cloud-Based Installations |
|
|
188 | (1) |
|
Installing Linux in the Enterprise |
|
|
189 | (1) |
|
Exploring Common Installation Topics |
|
|
189 | (10) |
|
Upgrading or installing from scratch |
|
|
189 | (1) |
|
|
190 | (1) |
|
Installing Linux to run virtually |
|
|
191 | (1) |
|
Using installation boot options |
|
|
192 | (1) |
|
Boot options for disabling features |
|
|
192 | (1) |
|
Boot options for video problems |
|
|
193 | (1) |
|
Boot options for special installation types |
|
|
193 | (1) |
|
Using specialized storage |
|
|
194 | (1) |
|
|
195 | (1) |
|
Understanding different partition types |
|
|
196 | (1) |
|
Tips for creating partitions |
|
|
196 | (2) |
|
Using the GRUB 2 boot loader |
|
|
198 | (1) |
|
|
199 | (1) |
|
|
199 | (2) |
|
Chapter 10 Getting and Managing Software |
|
|
201 | (14) |
|
Managing Software on the Desktop |
|
|
201 | (2) |
|
Going Beyond the Software Window |
|
|
203 | (1) |
|
Understanding Linux Software Packaging |
|
|
204 | (1) |
|
Working with Debian Packaging |
|
|
205 | (9) |
|
|
205 | (4) |
|
Working with APT repositories |
|
|
209 | (2) |
|
|
211 | (3) |
|
|
214 | (1) |
|
|
214 | (1) |
|
Chapter 11 Managing User Accounts |
|
|
215 | (22) |
|
|
215 | (8) |
|
Adding users with adduser |
|
|
218 | (2) |
|
|
220 | (2) |
|
Modifying users with usermod |
|
|
222 | (1) |
|
Deleting users with deluser |
|
|
223 | (1) |
|
Understanding Group Accounts |
|
|
223 | (2) |
|
|
224 | (1) |
|
|
225 | (1) |
|
Managing Users in the Enterprise |
|
|
225 | (8) |
|
Setting permissions with Access Control Lists |
|
|
226 | (1) |
|
Setting ACLs with setfacl |
|
|
227 | (1) |
|
|
228 | (1) |
|
|
229 | (2) |
|
Adding directories for users to collaborate |
|
|
231 | (1) |
|
Creating group collaboration directories (set GID bit) |
|
|
231 | (2) |
|
Creating restricted deletion directories (sticky bit) |
|
|
233 | (1) |
|
Centralizing User Accounts |
|
|
233 | (1) |
|
|
234 | (1) |
|
|
234 | (3) |
|
Chapter 12 Managing Disks and Filesystems |
|
|
237 | (30) |
|
Understanding Disk Storage |
|
|
237 | (2) |
|
|
239 | (10) |
|
Understanding partition tables |
|
|
239 | (1) |
|
|
240 | (1) |
|
Creating a single-partition disk |
|
|
241 | (4) |
|
Creating a multiple-partition disk |
|
|
245 | (4) |
|
Using Logical Volume Manager Partitions |
|
|
249 | (5) |
|
|
249 | (3) |
|
Creating LVM logical volumes |
|
|
252 | (2) |
|
Growing LVM logical volumes |
|
|
254 | (1) |
|
|
254 | (9) |
|
|
255 | (2) |
|
|
257 | (1) |
|
|
258 | (1) |
|
Using the fstab file to define mountable filesystems |
|
|
258 | (3) |
|
Using the mount command to mount filesystems |
|
|
261 | (1) |
|
Mounting a disk image in loopback |
|
|
262 | (1) |
|
|
262 | (1) |
|
Using the mkfs Command to Create a Filesystem |
|
|
263 | (1) |
|
Managing Storage with Cockpit |
|
|
264 | (1) |
|
|
265 | (1) |
|
|
266 | (1) |
|
Part IV Becoming a Linux Server Administrator |
|
|
267 | (226) |
|
Chapter 13 Understanding Server Administration |
|
|
269 | (30) |
|
Getting Started with Server Administration |
|
|
270 | (7) |
|
Step 1 Install the server |
|
|
270 | (2) |
|
Step 2 Configure the server |
|
|
272 | (1) |
|
Using configuration files |
|
|
272 | (1) |
|
Checking the default configuration |
|
|
272 | (1) |
|
|
272 | (2) |
|
|
274 | (1) |
|
|
274 | (1) |
|
|
274 | (1) |
|
|
274 | (1) |
|
|
275 | (1) |
|
Security settings in configuration files |
|
|
275 | (1) |
|
Step 5 Monitor the server |
|
|
275 | (1) |
|
|
275 | (1) |
|
Run system activity reports |
|
|
276 | (1) |
|
Watch activity live with Cockpit |
|
|
276 | (1) |
|
Keep system software up to date |
|
|
277 | (1) |
|
Check the filesystem for signs of crackers |
|
|
277 | (1) |
|
Checking and Setting Servers |
|
|
277 | (1) |
|
Managing Remote Access with the Secure Shell Service |
|
|
277 | (9) |
|
Starting the openssh-server service |
|
|
278 | (1) |
|
|
278 | (1) |
|
Using ssh for remote login |
|
|
279 | (1) |
|
Using SSH for remote execution |
|
|
280 | (1) |
|
Copying files between systems with scp and rsync |
|
|
281 | (3) |
|
Interactive copying with sftp |
|
|
284 | (1) |
|
Using key-based (passwordless) authentication |
|
|
285 | (1) |
|
Configuring System Logging |
|
|
286 | (5) |
|
Enabling system logging with rsyslog |
|
|
287 | (1) |
|
Understanding the rsyslog.conf file |
|
|
287 | (2) |
|
Understanding log messages |
|
|
289 | (1) |
|
Setting up and using a loghost with rsyslogd |
|
|
289 | (1) |
|
Watching logs with logwatch |
|
|
290 | (1) |
|
Checking System Resources with sar |
|
|
291 | (2) |
|
|
293 | (2) |
|
Displaying system space with df |
|
|
293 | (1) |
|
Checking disk usage with du |
|
|
294 | (1) |
|
Finding disk consumption with find |
|
|
294 | (1) |
|
Managing Servers in the Enterprise |
|
|
295 | (1) |
|
|
296 | (1) |
|
|
296 | (3) |
|
Chapter 14 Administering Networking |
|
|
299 | (28) |
|
Configuring Networking for Desktops |
|
|
300 | (12) |
|
Checking your network interfaces |
|
|
302 | (1) |
|
Checking your network from NetworkManager |
|
|
302 | (1) |
|
Checking your network from Cockpit |
|
|
303 | (1) |
|
Checking your network from the command line |
|
|
304 | (4) |
|
Configuring network interfaces |
|
|
308 | (1) |
|
Setting IP addresses manually |
|
|
308 | (1) |
|
Setting IP address aliases |
|
|
309 | (1) |
|
|
310 | (1) |
|
Configuring a network proxy connection |
|
|
311 | (1) |
|
Configuring Networking from the Command Line |
|
|
312 | (9) |
|
Configure networking with nmtui |
|
|
312 | (1) |
|
Editing a NetworkManager TUI connection |
|
|
313 | (1) |
|
Understanding networking configuration files |
|
|
314 | (1) |
|
|
315 | (3) |
|
Setting alias network interfaces |
|
|
318 | (1) |
|
Setting up Ethernet channel bonding |
|
|
319 | (1) |
|
|
320 | (1) |
|
Configuring Networking in the Enterprise |
|
|
321 | (2) |
|
Configuring Linux as a router |
|
|
321 | (1) |
|
Configuring Linux as a DHCP server |
|
|
322 | (1) |
|
Configuring Linux as a DNS server |
|
|
322 | (1) |
|
Configuring Linux as a proxy server |
|
|
323 | (1) |
|
|
323 | (1) |
|
|
324 | (3) |
|
Chapter 15 Starting and Stopping Services |
|
|
327 | (36) |
|
Understanding the Initialization Daemon (init or systemd) |
|
|
328 | (15) |
|
Understanding the classic init daemons |
|
|
329 | (6) |
|
Understanding systemd initialization |
|
|
335 | (1) |
|
|
335 | (6) |
|
Learning systemd's backward compatibility to SysVinit |
|
|
341 | (2) |
|
Checking the Status of Services |
|
|
343 | (3) |
|
Checking services for SysVinit systems |
|
|
343 | (3) |
|
Stopping and Starting Services |
|
|
346 | (4) |
|
Stopping and starting SysVinit services |
|
|
346 | (1) |
|
Stopping a service with systemd |
|
|
347 | (1) |
|
Starting a service with systemd |
|
|
348 | (1) |
|
Restarting a service with systemd |
|
|
348 | (1) |
|
Reloading a service with systemd |
|
|
349 | (1) |
|
Enabling Persistent Services |
|
|
350 | (3) |
|
Configuring persistent services for SysVinit |
|
|
350 | (1) |
|
Enabling a service with systemd |
|
|
351 | (1) |
|
Disabling a service with systemd |
|
|
352 | (1) |
|
Configuring a Default Runlevel or Target Unit |
|
|
353 | (1) |
|
Configuring the SysVinit default runlevel |
|
|
353 | (1) |
|
Adding New or Customized Services |
|
|
354 | (6) |
|
Adding new services to SysVinit |
|
|
355 | (1) |
|
Step 1 Create a new or customized service script file |
|
|
355 | (1) |
|
Step 2 Add the service script to /etc/rc.d/init.d |
|
|
356 | (1) |
|
Step 3 Set appropriate permission on the script |
|
|
357 | (1) |
|
Step 4 Add the service to runlevel directories |
|
|
357 | (1) |
|
Adding new services to systemd |
|
|
357 | (1) |
|
Step 1 Create a new or customized service configuration unit file |
|
|
358 | (1) |
|
Step 2 Move the service configuration unit file |
|
|
358 | (1) |
|
Step 3 Add the service to the Wants directory |
|
|
359 | (1) |
|
|
360 | (1) |
|
|
360 | (3) |
|
Chapter 16 Configuring a Print Server |
|
|
363 | (22) |
|
Common UNIX Printing System |
|
|
363 | (2) |
|
|
365 | (10) |
|
Adding a printer automatically |
|
|
365 | (1) |
|
Using web-based CUPS administration |
|
|
366 | (1) |
|
Allow remote printing administration |
|
|
367 | (1) |
|
Add a printer not automatically detected |
|
|
367 | (1) |
|
Using the Print Settings window |
|
|
368 | (1) |
|
Configuring local printers with the Print Settings window |
|
|
369 | (3) |
|
Configuring remote printers |
|
|
372 | (1) |
|
Adding a remote CUPS printer |
|
|
373 | (1) |
|
Adding a remote UNIX (LDP/LPR) printer |
|
|
373 | (1) |
|
Adding a Windows (SMB) printer |
|
|
374 | (1) |
|
Working with CUPS Printing |
|
|
375 | (3) |
|
Configuring the CUPS server (cupsd.conf) |
|
|
375 | (1) |
|
|
376 | (1) |
|
Configuring CUPS printer options manually |
|
|
377 | (1) |
|
|
378 | (2) |
|
|
378 | (1) |
|
Listing status with Ipstat -t |
|
|
379 | (1) |
|
Removing print jobs with cancel |
|
|
379 | (1) |
|
Configuring Print Servers |
|
|
380 | (3) |
|
Configuring a shared CUPS printer |
|
|
380 | (1) |
|
Configuring a shared Samba printer |
|
|
381 | (1) |
|
Understanding smb.conf for printing |
|
|
382 | (1) |
|
|
382 | (1) |
|
|
383 | (1) |
|
|
383 | (2) |
|
Chapter 17 Configuring a Web Server |
|
|
385 | (28) |
|
Understanding the Apache Web Server |
|
|
385 | (1) |
|
Getting and Installing Your Apache Web Server |
|
|
386 | (3) |
|
|
389 | (17) |
|
|
389 | (1) |
|
Apache file permissions and ownership |
|
|
389 | (1) |
|
|
390 | (1) |
|
|
390 | (3) |
|
Understanding the Apache configuration files |
|
|
393 | (1) |
|
|
393 | (2) |
|
Understanding default settings |
|
|
395 | (3) |
|
Adding a virtual host to Apache |
|
|
398 | (2) |
|
Allowing users to publish their own web content |
|
|
400 | (1) |
|
Securing your web traffic with TLS |
|
|
401 | (1) |
|
Understanding how SSL is configured |
|
|
402 | (1) |
|
Generating an SSL key and self-signed certificate |
|
|
403 | (2) |
|
Generating a certificate signing request |
|
|
405 | (1) |
|
Troubleshooting Your Web Server |
|
|
406 | (4) |
|
Checking for configuration errors |
|
|
406 | (2) |
|
Access forbidden and server internal errors |
|
|
408 | (2) |
|
|
410 | (1) |
|
|
410 | (3) |
|
Chapter 18 Configuring an FTP Server |
|
|
413 | (16) |
|
|
413 | (2) |
|
Installing the vsftpd FTP Server |
|
|
415 | (1) |
|
Controlling the vsftpd Service |
|
|
416 | (2) |
|
|
417 | (1) |
|
Integrating Linux file permissions with vsftpd |
|
|
418 | (1) |
|
Configuring Your FTP Server |
|
|
418 | (4) |
|
|
418 | (1) |
|
|
419 | (1) |
|
Setting up vsftpd for the Internet |
|
|
420 | (2) |
|
Using FTP Clients to Connect to Your Server |
|
|
422 | (4) |
|
Accessing an FTP server from a browser |
|
|
422 | (1) |
|
Accessing an FTP server with the Iftp command |
|
|
423 | (2) |
|
|
425 | (1) |
|
|
426 | (1) |
|
|
426 | (3) |
|
Chapter 19 Configuring a Windows File Sharing (Samba) Server |
|
|
429 | (18) |
|
|
429 | (1) |
|
|
430 | (1) |
|
|
431 | (4) |
|
|
431 | (4) |
|
|
435 | (6) |
|
Configuring the [ global] section |
|
|
435 | (2) |
|
Configuring the [ homes] section |
|
|
437 | (1) |
|
Configuring the [ printers] section |
|
|
437 | (1) |
|
Creating a Samba shared folder |
|
|
438 | (1) |
|
|
438 | (3) |
|
|
441 | (3) |
|
Accessing Samba shares in Linux |
|
|
442 | (1) |
|
Accessing Samba shares from a Linux file manager |
|
|
442 | (1) |
|
Mounting a Samba share from a Linux command line |
|
|
442 | (2) |
|
Accessing Samba shares in Windows |
|
|
444 | (1) |
|
Using Samba in the Enterprise |
|
|
444 | (1) |
|
|
444 | (1) |
|
|
445 | (2) |
|
Chapter 20 Configuring an NFS File Server |
|
|
447 | (20) |
|
|
448 | (1) |
|
|
449 | (1) |
|
|
450 | (4) |
|
Configuring the /etc/exports file |
|
|
450 | (1) |
|
Hostnames in /etc/exports |
|
|
451 | (1) |
|
Access options in /etc/exports |
|
|
452 | (1) |
|
User mapping options in /etc/exports |
|
|
453 | (1) |
|
Exporting the shared filesystems |
|
|
454 | (1) |
|
|
454 | (1) |
|
|
455 | (8) |
|
|
456 | (1) |
|
Manually mounting an NFS filesystem |
|
|
456 | (1) |
|
Mounting an NFS filesystem at boot time |
|
|
457 | (1) |
|
Mounting noauto filesystems |
|
|
458 | (1) |
|
|
458 | (2) |
|
Using autofs to mount NFS filesystems on demand |
|
|
460 | (1) |
|
Automounting to the /net directory |
|
|
460 | (1) |
|
Automounting home directories |
|
|
461 | (2) |
|
Unmounting NFS Filesystems |
|
|
463 | (1) |
|
|
464 | (1) |
|
|
464 | (3) |
|
Chapter 21 Troubleshooting Linux |
|
|
467 | (26) |
|
|
467 | (9) |
|
|
468 | (1) |
|
Starting from the firmware (BIOS or UEFI) |
|
|
469 | (1) |
|
Troubleshooting BIOS setup |
|
|
470 | (1) |
|
Troubleshooting boot order |
|
|
471 | (1) |
|
|
471 | (1) |
|
|
472 | (2) |
|
Troubleshooting the initialization system |
|
|
474 | (2) |
|
Troubleshooting Software Packages |
|
|
476 | (3) |
|
Troubleshooting Networking |
|
|
479 | (4) |
|
Troubleshooting outgoing connections |
|
|
479 | (1) |
|
|
480 | (1) |
|
Check physical connections |
|
|
480 | (1) |
|
|
481 | (1) |
|
Check hostname resolution |
|
|
482 | (1) |
|
Troubleshooting incoming connections |
|
|
483 | (2) |
|
Check if the client can reach your system at all |
|
|
483 | (1) |
|
Check if the service is available to the client |
|
|
484 | (1) |
|
Check the service on the server |
|
|
485 | (1) |
|
|
485 | (5) |
|
|
486 | (2) |
|
Checking for memory problems |
|
|
488 | (1) |
|
Dealing with memory problems |
|
|
489 | (1) |
|
|
490 | (1) |
|
|
490 | (3) |
|
Part V Learning Linux Security Techniques |
|
|
493 | (92) |
|
Chapter 22 Understanding Basic Linux Security |
|
|
495 | (30) |
|
Implementing Physical Security |
|
|
495 | (15) |
|
Implementing disaster recovery |
|
|
496 | (1) |
|
|
496 | (1) |
|
One user per user account |
|
|
497 | (1) |
|
Limiting access to the root user account |
|
|
497 | (1) |
|
Setting expiration dates on temporary accounts |
|
|
497 | (1) |
|
Removing unused user accounts |
|
|
498 | (2) |
|
|
500 | (1) |
|
|
500 | (1) |
|
Setting and changing passwords |
|
|
501 | (1) |
|
Enforcing best password practices |
|
|
502 | (2) |
|
Understanding the password files and password hashes |
|
|
504 | (2) |
|
|
506 | (1) |
|
Managing dangerous filesystem permissions |
|
|
506 | (1) |
|
Securing the password files |
|
|
507 | (1) |
|
Locking down the filesystem |
|
|
508 | (1) |
|
Managing software and services |
|
|
509 | (1) |
|
Updating software packages |
|
|
509 | (1) |
|
Keeping up with security advisories |
|
|
509 | (1) |
|
|
510 | (1) |
|
|
510 | (11) |
|
|
510 | (2) |
|
|
512 | (1) |
|
Detecting counterfeit accounts and privileges |
|
|
512 | (2) |
|
Detecting bad account passwords |
|
|
514 | (2) |
|
Monitoring the filesystem |
|
|
516 | (1) |
|
Verifying software packages |
|
|
516 | (1) |
|
|
516 | (2) |
|
Detecting viruses and rootkits |
|
|
518 | (3) |
|
Auditing and Reviewing Linux |
|
|
521 | (1) |
|
Conducting compliance reviews |
|
|
521 | (1) |
|
Conducting security reviews |
|
|
522 | (1) |
|
|
522 | (1) |
|
|
523 | (2) |
|
Chapter 23 Understanding Advanced Linux Security |
|
|
525 | (28) |
|
Implementing Linux Security with Cryptography |
|
|
525 | (16) |
|
|
526 | (1) |
|
Understanding encryption/decryption |
|
|
527 | (1) |
|
Understanding cryptographic ciphers |
|
|
527 | (1) |
|
Understanding cryptographic cipher keys |
|
|
527 | (6) |
|
Understanding digital signatures |
|
|
533 | (2) |
|
Implementing Linux cryptography |
|
|
535 | (1) |
|
|
535 | (1) |
|
Encrypting a Linux filesystem at installation |
|
|
536 | (1) |
|
Encrypting a Linux directory |
|
|
537 | (3) |
|
|
540 | (1) |
|
Encrypting Linux with miscellaneous tools |
|
|
540 | (1) |
|
Using Encryption from the Desktop |
|
|
541 | (1) |
|
Implementing Linux Security with PAM |
|
|
541 | (11) |
|
Understanding the PAM authentication process |
|
|
542 | (1) |
|
Understanding PAM contexts |
|
|
543 | (1) |
|
Understanding PAM control flags |
|
|
544 | (1) |
|
Understanding PAM modules |
|
|
545 | (1) |
|
Understanding PAM system event configuration files |
|
|
545 | (1) |
|
Administering PAM on your Linux system |
|
|
546 | (1) |
|
Managing PAM-aware application configuration files |
|
|
546 | (1) |
|
Implementing resources limits with PAM |
|
|
547 | (2) |
|
Implementing time restrictions with PAM |
|
|
549 | (1) |
|
Enforcing good passwords with PAM |
|
|
550 | (1) |
|
Encouraging sudo use with PAM |
|
|
551 | (1) |
|
Obtaining more information on PAM |
|
|
551 | (1) |
|
|
552 | (1) |
|
|
552 | (1) |
|
Chapter 24 Enhancing Linux Security with AppArmor |
|
|
553 | (8) |
|
|
553 | (3) |
|
|
556 | (3) |
|
|
559 | (1) |
|
|
560 | (1) |
|
Chapter 25 Securing Linux on a Network |
|
|
561 | (24) |
|
Auditing Network Services |
|
|
561 | (9) |
|
Evaluating access to network services with nmap |
|
|
563 | (3) |
|
Using nmap to audit your network services' advertisements |
|
|
566 | (4) |
|
|
570 | (13) |
|
|
571 | (1) |
|
|
572 | (1) |
|
|
572 | (2) |
|
Understanding the iptables utility |
|
|
574 | (2) |
|
Using the iptables utility |
|
|
576 | (7) |
|
|
583 | (1) |
|
|
583 | (2) |
|
Part VI Engaging with Cloud Computing |
|
|
585 | (64) |
|
Chapter 26 Shifting to Clouds and Containers |
|
|
587 | (14) |
|
Understanding Linux Containers |
|
|
588 | (2) |
|
|
589 | (1) |
|
|
589 | (1) |
|
|
590 | (1) |
|
Working with Linux Containers |
|
|
590 | (10) |
|
|
590 | (3) |
|
Deploying Docker containers |
|
|
593 | (7) |
|
Using containers in the enterprise |
|
|
600 | (1) |
|
|
600 | (1) |
|
|
600 | (1) |
|
Chapter 27 Deploying Linux to the Public Cloud |
|
|
601 | (18) |
|
Running Linux in the Cloud Using cloud-init |
|
|
601 | (3) |
|
Creating LXD Linux Images for Cloud Deployments |
|
|
604 | (6) |
|
Working with LXD profiles |
|
|
604 | (3) |
|
|
607 | (1) |
|
Using OpenStack to deploy cloud images |
|
|
608 | (2) |
|
Using Amazon EC2 to Deploy Cloud Images |
|
|
610 | (8) |
|
|
611 | (2) |
|
Provisioning and launching an EC2 instance |
|
|
613 | (5) |
|
|
618 | (1) |
|
|
618 | (1) |
|
Chapter 28 Automating Apps and Infrastructure with Ansible |
|
|
619 | (14) |
|
|
620 | (1) |
|
Exploring Ansible Components |
|
|
621 | (2) |
|
|
621 | (1) |
|
|
622 | (1) |
|
|
622 | (1) |
|
|
622 | (1) |
|
|
622 | (1) |
|
Roles, imports, and includes |
|
|
623 | (1) |
|
Stepping Through an Ansible Deployment |
|
|
623 | (3) |
|
|
624 | (1) |
|
Setting up SSH keys to each node |
|
|
624 | (2) |
|
|
626 | (3) |
|
|
626 | (1) |
|
Authenticating to the hosts |
|
|
626 | (1) |
|
|
627 | (1) |
|
|
628 | (1) |
|
Running Ad-Hoc Ansible Commands |
|
|
629 | (2) |
|
|
629 | (2) |
|
|
631 | (1) |
|
|
631 | (2) |
|
Chapter 29 Deploying Applications as Containers with Kubernetes |
|
|
633 | (16) |
|
|
634 | (2) |
|
|
634 | (1) |
|
|
635 | (1) |
|
|
635 | (1) |
|
|
636 | (1) |
|
|
636 | (11) |
|
Getting Kubernetes up and running |
|
|
637 | (1) |
|
Deploying a Kubernetes application |
|
|
638 | (1) |
|
Getting information on the deployment's pods |
|
|
639 | (4) |
|
Exposing applications with services |
|
|
643 | (1) |
|
Scaling up an application |
|
|
644 | (1) |
|
Checking the load balancer |
|
|
645 | (1) |
|
Scaling down an application |
|
|
646 | (1) |
|
|
646 | (1) |
|
|
647 | (1) |
|
|
647 | (2) |
Appendix: Exercise Answers |
|
649 | (52) |
Index |
|
701 | |