Introduction |
|
xxxiii | |
|
|
xxxiv | |
|
|
xxxv | |
|
Those Wanting to Become Intermediate or Advanced Users |
|
|
xxxv | |
|
Sysadmins, Programmers, and DevOps |
|
|
xxxvi | |
|
|
xxxvii | |
|
Conventions Used in This Book |
|
|
xxxviii | |
Part I Getting Started |
|
|
1 Installing Ubuntu and Post-Installation Configuration |
|
|
1 | (28) |
|
Before You Begin the Installation |
|
|
1 | (5) |
|
Researching Your Hardware Specifications |
|
|
2 | (1) |
|
|
2 | (2) |
|
|
4 | (1) |
|
Planning Partition Strategies |
|
|
5 | (1) |
|
|
5 | (1) |
|
Installing from DVD or USB Drive |
|
|
6 | (1) |
|
Step-by-Step Installation |
|
|
6 | (7) |
|
|
7 | (6) |
|
|
13 | (1) |
|
|
13 | (1) |
|
Finding Programs and Files |
|
|
14 | (1) |
|
|
15 | (3) |
|
|
18 | (1) |
|
Configuring Software Repositories |
|
|
19 | (2) |
|
|
21 | (3) |
|
Detecting and Configuring a Printer |
|
|
22 | (1) |
|
Configuring Power Management in Ubuntu |
|
|
22 | (1) |
|
Setting the Time and Date |
|
|
23 | (1) |
|
Configuring Wireless Networks |
|
|
24 | (2) |
|
Troubleshooting Post-Installation Configuration Problems |
|
|
26 | (1) |
|
|
27 | (2) |
|
2 Background Information and Resources |
|
|
29 | (14) |
|
|
29 | (2) |
|
|
31 | (2) |
|
|
33 | (1) |
|
|
33 | (2) |
|
|
35 | (1) |
|
Getting the Most from Ubuntu and Linux Documentation |
|
|
35 | (1) |
|
Ubuntu Developers and Documentation |
|
|
36 | (1) |
|
Websites and Search Engines |
|
|
37 | (3) |
|
|
37 | (1) |
|
|
37 | (1) |
|
|
38 | (1) |
|
|
38 | (1) |
|
|
39 | (1) |
|
|
39 | (1) |
|
|
40 | (1) |
|
|
40 | (2) |
|
Ubuntu Project Mailing Lists |
|
|
41 | (1) |
|
|
42 | (1) |
Part II Desktop Ubuntu |
|
|
|
43 | (20) |
|
Foundations and the X Server |
|
|
43 | (9) |
|
|
44 | (1) |
|
|
45 | (1) |
|
Elements of the xorg.conf File |
|
|
46 | (5) |
|
|
51 | (1) |
|
|
51 | (1) |
|
|
52 | (1) |
|
|
52 | (8) |
|
|
53 | (5) |
|
Customizing and Configuring Unity |
|
|
58 | (2) |
|
|
60 | (1) |
|
|
61 | (2) |
|
|
63 | (12) |
|
Getting Started with Firefox |
|
|
63 | (2) |
|
Checking Out Google Chrome and Chromium |
|
|
65 | (1) |
|
|
66 | (3) |
|
|
66 | (1) |
|
|
67 | (1) |
|
|
68 | (1) |
|
|
69 | (1) |
|
|
69 | (1) |
|
|
69 | (1) |
|
|
70 | (2) |
|
|
72 | (2) |
|
|
74 | (1) |
|
5 Productivity Applications |
|
|
75 | (10) |
|
|
76 | (2) |
|
Other Office Suites for Ubuntu |
|
|
78 | (2) |
|
Working with GNOME Office |
|
|
78 | (2) |
|
|
80 | (1) |
|
Other Useful Productivity Software |
|
|
80 | (3) |
|
|
80 | (1) |
|
Working with XML and DocBook |
|
|
81 | (1) |
|
|
82 | (1) |
|
Productivity Applications Written for Microsoft Windows |
|
|
83 | (1) |
|
|
83 | (2) |
|
6 Multimedia Applications |
|
|
85 | (26) |
|
|
85 | (7) |
|
|
86 | (1) |
|
|
87 | (1) |
|
|
88 | (1) |
|
|
89 | (3) |
|
|
92 | (6) |
|
The GNU Image Manipulation Program |
|
|
93 | (1) |
|
|
94 | (1) |
|
Working with Graphics Formats |
|
|
95 | (2) |
|
|
97 | (1) |
|
Other Graphics Manipulation Options |
|
|
97 | (1) |
|
Using Digital Cameras with Ubuntu |
|
|
98 | (1) |
|
|
98 | (1) |
|
Using Shotwell Photo Manager |
|
|
98 | (1) |
|
Burning CDs and DVDs in Ubuntu |
|
|
99 | (5) |
|
Creating CDs and DVDs with Brasero |
|
|
99 | (1) |
|
Creating CDs from the Command Line |
|
|
100 | (2) |
|
Creating DVDs from the Command Line |
|
|
102 | (2) |
|
|
104 | (5) |
|
|
104 | (1) |
|
|
105 | (1) |
|
|
106 | (1) |
|
|
107 | (1) |
|
|
107 | (2) |
|
|
109 | (2) |
|
7 Other Ubuntu Interfaces |
|
|
111 | (10) |
|
|
112 | (1) |
|
|
113 | (1) |
|
|
114 | (2) |
|
|
115 | (1) |
|
|
116 | (1) |
|
|
117 | (1) |
|
|
118 | (1) |
|
|
118 | (3) |
|
|
121 | (12) |
|
|
121 | (1) |
|
Installing Proprietary Video Drivers |
|
|
122 | (1) |
|
|
123 | (1) |
|
Installing Games in Ubuntu |
|
|
123 | (7) |
|
|
124 | (1) |
|
|
124 | (1) |
|
|
125 | (1) |
|
|
126 | (1) |
|
|
126 | (1) |
|
|
127 | (1) |
|
|
128 | (1) |
|
|
129 | (1) |
|
|
129 | (1) |
|
|
129 | (1) |
|
|
130 | (1) |
|
|
130 | (3) |
Part III System Administration |
|
|
|
133 | (16) |
|
|
133 | (1) |
|
Using Synaptic for Software Management |
|
|
134 | (3) |
|
|
137 | (1) |
|
Working on the Command Line |
|
|
138 | (5) |
|
|
138 | (3) |
|
|
141 | (1) |
|
Using apt Instead of apt-get |
|
|
142 | (1) |
|
Compiling Software from Source |
|
|
143 | (2) |
|
|
143 | (1) |
|
Compiling from Source from the Ubuntu Repositories |
|
|
144 | (1) |
|
|
145 | (1) |
|
|
145 | (1) |
|
|
146 | (1) |
|
|
146 | (1) |
|
|
147 | (2) |
|
10 Command-Line Beginner's Class |
|
|
149 | (36) |
|
What Is the Command Line? |
|
|
150 | (1) |
|
Accessing the Command Line |
|
|
151 | (3) |
|
|
152 | (1) |
|
|
153 | (1) |
|
Logging In and Out from a Remote Computer |
|
|
153 | (1) |
|
|
154 | (1) |
|
|
155 | (2) |
|
|
156 | (1) |
|
|
156 | (1) |
|
|
157 | (1) |
|
Understanding the Linux File System Hierarchy |
|
|
157 | (5) |
|
Essential Commands in /bin and /shin |
|
|
158 | (1) |
|
Configuration Files in /etc |
|
|
159 | (1) |
|
|
159 | (1) |
|
Using the Contents of the /pros Directory to Interact with the Kernel |
|
|
160 | (1) |
|
Working with Shared Data in the /usr Directory |
|
|
161 | (1) |
|
Temporary File Storage in the /tmp Directory |
|
|
162 | (1) |
|
Accessing Variable Data Files in the /var Directory |
|
|
162 | (1) |
|
Navigating the Linux File System |
|
|
162 | (3) |
|
Listing the Contents of a Directory with ls |
|
|
162 | (2) |
|
Changing Directories with cd |
|
|
164 | (1) |
|
Finding Your Current Directory with pwd |
|
|
165 | (1) |
|
|
165 | (8) |
|
|
166 | (1) |
|
|
167 | (1) |
|
Altering File Permissions with chmod |
|
|
168 | (1) |
|
File Permissions with umask |
|
|
169 | (1) |
|
File Permissions with chgrp |
|
|
170 | (1) |
|
Changing File Permissions with chown |
|
|
170 | (1) |
|
Understanding Set User ID, Set Group ID, and Sticky Bit Permissions |
|
|
170 | (1) |
|
Setting Permissions with Access Control Lists |
|
|
171 | (2) |
|
|
173 | (5) |
|
Creating a File with touch |
|
|
173 | (1) |
|
Creating a Directory with mkdir |
|
|
173 | (1) |
|
Deleting a Directory with rmdir |
|
|
174 | (1) |
|
Deleting a File or Directory with rm |
|
|
175 | (1) |
|
Moving or Renaming a File with mv |
|
|
175 | (1) |
|
|
176 | (1) |
|
Displaying the Contents of a File with cat |
|
|
177 | (1) |
|
Displaying the Contents of a File with less |
|
|
177 | (1) |
|
Using Wildcards and Regular Expressions |
|
|
177 | (1) |
|
|
178 | (5) |
|
Understanding and Fixing sudo |
|
|
178 | (3) |
|
|
181 | (1) |
|
|
182 | (1) |
|
|
182 | (1) |
|
|
183 | (1) |
|
Commonly Used Commands and Programs |
|
|
183 | (1) |
|
|
184 | (1) |
|
11 Command-Line Master Class Part 1 |
|
|
185 | (24) |
|
Why Use the Command Line? |
|
|
186 | (1) |
|
|
187 | (21) |
|
Printing the Contents of a File with cat |
|
|
188 | (1) |
|
Changing Directories with cd |
|
|
189 | (2) |
|
Changing File Access Permissions with chmod |
|
|
191 | (1) |
|
|
191 | (1) |
|
Printing Disk Usage with du |
|
|
192 | (1) |
|
|
193 | (1) |
|
Finding Files by Searching with find |
|
|
193 | (3) |
|
Searches for a String in Input with grep |
|
|
196 | (1) |
|
Paging Through Output with less |
|
|
197 | (2) |
|
Creating Links Between Files with in |
|
|
199 | (1) |
|
Finding Files from an Index with locate |
|
|
200 | (1) |
|
Listing Files in the Current Directory with ls |
|
|
200 | (2) |
|
Listing System Information with lsblk, lshw, lsmod, and lspci |
|
|
202 | (1) |
|
Reading Manual Pages with man |
|
|
203 | (1) |
|
Making Directories with mkdir |
|
|
204 | (1) |
|
|
204 | (1) |
|
Renaming Files with rename |
|
|
204 | (1) |
|
Deleting Files and Directories with rm |
|
|
205 | (1) |
|
Sorting the Contents of a File with sort |
|
|
205 | (2) |
|
Printing the Last Lines of a File with tail |
|
|
207 | (1) |
|
Printing the Location of a Command with which |
|
|
207 | (1) |
|
|
207 | (1) |
|
|
208 | (1) |
|
12 Command-line Master Class Part 2 |
|
|
209 | (32) |
|
Redirecting Output and Input |
|
|
209 | (2) |
|
stdin, stdout, stderr, and Redirection |
|
|
211 | (1) |
|
|
212 | (1) |
|
Finding Differences in Files with diff |
|
|
212 | (1) |
|
Finding Similarities in Files with comm |
|
|
212 | (1) |
|
Limiting Resource Use and Job Control |
|
|
213 | (6) |
|
Listing Processes with ps |
|
|
213 | (1) |
|
|
214 | (1) |
|
Running One or More Tasks in the Background |
|
|
215 | (1) |
|
Moving Jobs to the Background or Foreground with bg and fg |
|
|
215 | (1) |
|
Printing Resource Usage with top |
|
|
216 | (2) |
|
Setting Processes Priority with nice |
|
|
218 | (1) |
|
|
219 | (3) |
|
|
219 | (2) |
|
Combining Commands with Boolean Operators |
|
|
221 | (1) |
|
Running Separate Commands in Sequence |
|
|
222 | (1) |
|
|
222 | (1) |
|
Using Environment Variables |
|
|
222 | (4) |
|
Using Common Text Editors |
|
|
226 | (6) |
|
|
227 | (1) |
|
|
227 | (2) |
|
|
229 | (1) |
|
|
230 | (2) |
|
Working with Compressed Files |
|
|
232 | (1) |
|
Using Multiple Terminals with byobu |
|
|
233 | (1) |
|
Polite System Reset Using REISUB |
|
|
234 | (1) |
|
Fixing an Ubuntu System That Will Not Boot |
|
|
235 | (1) |
|
|
235 | (1) |
|
|
235 | (1) |
|
|
235 | (1) |
|
|
236 | (1) |
|
|
236 | (1) |
|
|
236 | (4) |
|
Running the Previous Command |
|
|
236 | (1) |
|
Running Any Previous Command |
|
|
237 | (1) |
|
Running a Previous Command that Started with Specific Letters |
|
|
237 | (1) |
|
Running the Same Thing You Just Ran with a Different First Word |
|
|
237 | (1) |
|
Viewing Your History and More |
|
|
237 | (1) |
|
|
237 | (1) |
|
|
238 | (1) |
|
Confining a Script to a Directory |
|
|
238 | (1) |
|
|
239 | (1) |
|
Reading the Contents of the Kernel Ring Buffer with dmesg |
|
|
239 | (1) |
|
|
240 | (1) |
|
|
241 | (24) |
|
|
241 | (4) |
|
|
242 | (2) |
|
|
244 | (1) |
|
|
244 | (1) |
|
|
245 | (3) |
|
|
245 | (1) |
|
|
246 | (2) |
|
|
248 | (4) |
|
|
248 | (2) |
|
|
250 | (1) |
|
Monitoring User Activity on the System |
|
|
251 | (1) |
|
|
252 | (5) |
|
|
252 | (1) |
|
|
253 | (1) |
|
|
254 | (2) |
|
Managing Password Security for Users |
|
|
256 | (1) |
|
Changing Passwords in a Batch |
|
|
256 | (1) |
|
Granting System Administrator Privileges to Regular Users |
|
|
257 | (5) |
|
Temporarily Changing User Identity with the su Command |
|
|
257 | (2) |
|
Granting Root Privileges on Occasion: The sudo Command |
|
|
259 | (3) |
|
|
262 | (2) |
|
|
262 | (1) |
|
Manually Configuring Quotas |
|
|
263 | (1) |
|
|
264 | (1) |
|
|
264 | (1) |
|
14 Automating Tasks and Shell Scripting |
|
|
265 | (46) |
|
|
265 | (7) |
|
Using at and batch to Schedule Tasks for Later |
|
|
265 | (3) |
|
Using crop to Run Jobs Repeatedly |
|
|
268 | (2) |
|
Using rtcwake to Wake Your Computer from Sleep Automatically |
|
|
270 | (2) |
|
|
272 | (5) |
|
|
273 | (1) |
|
Shell Pattern-Matching Support |
|
|
274 | (1) |
|
Redirecting Input and Output |
|
|
275 | (1) |
|
|
276 | (1) |
|
|
277 | (1) |
|
Writing and Executing a Shell Script |
|
|
277 | (31) |
|
Running the New Shell Program |
|
|
279 | (1) |
|
Storing Shell Scripts for System-Wide Access |
|
|
279 | (1) |
|
Interpreting Shell Scripts Through Specific Shells |
|
|
280 | (1) |
|
Using Variables in Shell Scripts |
|
|
281 | (1) |
|
Assigning a Value to a Variable |
|
|
282 | (1) |
|
Accessing Variable Values |
|
|
282 | (1) |
|
|
282 | (1) |
|
A Simple Example of a Positional Parameter |
|
|
283 | (1) |
|
Using Positional Parameters to Access and Retrieve Variables from the Command Line |
|
|
284 | (1) |
|
Using a Simple Script to Automate Tasks |
|
|
284 | (2) |
|
|
286 | (1) |
|
|
287 | (1) |
|
Using Double Quotes to Resolve Variables in Strings with Embedded Spaces |
|
|
288 | (1) |
|
Using Single Quotes to Maintain Unexpanded Variables |
|
|
288 | (1) |
|
Using the Backslash as an Escape Character |
|
|
289 | (1) |
|
Using the Backtick to Replace a String with Output |
|
|
289 | (1) |
|
Comparison of Expressions in pdksh and bash |
|
|
290 | (5) |
|
Comparing Expressions with tcsh |
|
|
295 | (4) |
|
|
299 | (1) |
|
|
300 | (2) |
|
|
302 | (1) |
|
The repeat Statement (tcsh) |
|
|
303 | (1) |
|
The select Statement (pdksh) |
|
|
303 | (1) |
|
|
304 | (1) |
|
|
304 | (1) |
|
|
305 | (2) |
|
The break and exit Statements |
|
|
307 | (1) |
|
Using Functions in Shell Scripts |
|
|
307 | (1) |
|
|
308 | (3) |
|
|
311 | (12) |
|
|
311 | (1) |
|
Beginning the Boot Loading Process |
|
|
312 | (7) |
|
|
314 | (1) |
|
System Services and Runlevels |
|
|
315 | (1) |
|
|
315 | (1) |
|
Booting into the Default Runlevel |
|
|
316 | (1) |
|
Understanding init Scripts and the Final Stage of Initialization |
|
|
316 | (1) |
|
Controlling Services at Boot with Administrative Tools |
|
|
317 | (1) |
|
|
318 | (1) |
|
Troubleshooting Runlevel Problems |
|
|
319 | (1) |
|
Starting and Stopping Services Manually |
|
|
319 | (1) |
|
|
319 | (1) |
|
|
320 | (2) |
|
|
322 | (1) |
|
|
322 | (1) |
|
16 System-Monitoring Tools |
|
|
323 | (18) |
|
|
323 | (10) |
|
Using the kill Command to Control Processes |
|
|
325 | (1) |
|
Using Priority Scheduling and Control |
|
|
326 | (1) |
|
Displaying Free and Used Memory with free |
|
|
327 | (1) |
|
|
328 | (1) |
|
|
329 | (1) |
|
|
329 | (2) |
|
|
331 | (2) |
|
Graphical Process and System Management Tools |
|
|
333 | (6) |
|
|
334 | (1) |
|
|
334 | (5) |
|
|
339 | (1) |
|
KDE Process- and System-Monitoring Tools |
|
|
339 | (1) |
|
Enterprise Server Monitoring |
|
|
340 | (1) |
|
|
340 | (1) |
|
|
340 | (1) |
|
|
340 | (1) |
|
|
341 | (28) |
|
Choosing a Backup Strategy |
|
|
341 | (7) |
|
|
342 | (1) |
|
Assessing Your Backup Needs and Resources |
|
|
343 | (2) |
|
Evaluating Backup Strategies |
|
|
345 | (3) |
|
|
348 | (1) |
|
Choosing Backup Hardware and Media |
|
|
348 | (2) |
|
|
348 | (1) |
|
CD-RW and DVD+RW/-RW Drives |
|
|
349 | (1) |
|
|
349 | (1) |
|
|
349 | (1) |
|
|
350 | (1) |
|
|
350 | (10) |
|
tar: The Most Basic Backup Tool |
|
|
351 | (2) |
|
|
353 | (1) |
|
The KDE ark Archiving Tool |
|
|
353 | (1) |
|
|
354 | (2) |
|
|
356 | (2) |
|
|
358 | (1) |
|
Using the Amanda Backup Application |
|
|
358 | (1) |
|
Alternative Backup Software |
|
|
359 | (1) |
|
|
360 | (4) |
|
|
360 | (1) |
|
Compressing, Encrypting, and Sending tar Streams |
|
|
361 | (1) |
|
|
361 | (1) |
|
|
362 | (1) |
|
|
362 | (2) |
|
Version Control for Configuration Files |
|
|
364 | (2) |
|
|
366 | (2) |
|
|
367 | (1) |
|
|
B2 | |
|
|
367 | (1) |
|
Saving Files from a Nonbooting Hard Drive |
|
|
368 | (1) |
|
|
368 | (1) |
|
|
369 | (46) |
|
Laying the Foundation: The localhost Interface |
|
|
370 | (1) |
|
Checking for the Availability of the Loopback Interface |
|
|
370 | (1) |
|
Configuring the Loopback Interface Manually |
|
|
370 | (1) |
|
Checking Connections with ping, traceroute, and mtr |
|
|
371 | (3) |
|
|
374 | (4) |
|
|
374 | (2) |
|
Using IP Masquerading in Ubuntu |
|
|
376 | (1) |
|
|
377 | (1) |
|
|
378 | (2) |
|
|
380 | (2) |
|
|
381 | (1) |
|
|
381 | (1) |
|
Broadcast, Unicast, and Multicast Addressing |
|
|
382 | (1) |
|
Hardware Devices for Networking |
|
|
382 | (7) |
|
|
382 | (2) |
|
|
384 | (1) |
|
|
385 | (1) |
|
|
386 | (1) |
|
Initializing New Network Hardware |
|
|
387 | (2) |
|
Using Network Configuration Tools |
|
|
389 | (10) |
|
Command-Line Network Interface Configuration |
|
|
389 | (5) |
|
Network Configuration Files |
|
|
394 | (3) |
|
Using Graphical Configuration Tools |
|
|
397 | (2) |
|
Dynamic Host Configuration Protocol |
|
|
399 | (6) |
|
|
399 | (1) |
|
Activating DHCP at Installation and Boot Time |
|
|
400 | (1) |
|
DHCP Software Installation and Configuration |
|
|
401 | (2) |
|
Using DHCP to Configure Network Hosts |
|
|
403 | (2) |
|
|
405 | (1) |
|
|
405 | (3) |
|
Support for Wireless Networking in Ubuntu |
|
|
405 | (2) |
|
Advantages of Wireless Networking |
|
|
407 | (1) |
|
Choosing from Among Available Wireless Protocols |
|
|
407 | (1) |
|
Beyond the Network and onto the Internet |
|
|
408 | (1) |
|
Common Configuration Information |
|
|
408 | (4) |
|
Understanding PPP over Ethernet |
|
|
410 | (1) |
|
Configuring a PPPoE Connection Manually |
|
|
411 | (1) |
|
Configuring Dial-Up Internet Access |
|
|
412 | (1) |
|
Troubleshooting Connection Problems |
|
|
413 | (1) |
|
|
414 | (1) |
|
19 Remote Access with SSH, Teinet, and VNC |
|
|
415 | (10) |
|
Setting Up a Telnet Server |
|
|
415 | (2) |
|
|
417 | (1) |
|
|
417 | (1) |
|
|
417 | (3) |
|
Using scp to Copy Individual Files Between Machines |
|
|
418 | (1) |
|
Using sf tp to Copy Many Files Between Machines |
|
|
418 | (1) |
|
Using ssh-keygen to Enable Key-Based Logins |
|
|
419 | (1) |
|
Virtual Network Computing |
|
|
420 | (3) |
|
|
423 | (2) |
|
20 Securing Your Machines |
|
|
425 | (16) |
|
Understanding Computer Attacks |
|
|
425 | (2) |
|
Assessing Your Vulnerability |
|
|
427 | (1) |
|
|
428 | (3) |
|
Securing a Wireless Network |
|
|
429 | (1) |
|
Passwords and Physical Security |
|
|
429 | (1) |
|
Configuring and Using Tripwire |
|
|
430 | (1) |
|
|
431 | (1) |
|
|
431 | (1) |
|
Configuring Your Firewall |
|
|
432 | (3) |
|
|
435 | (2) |
|
Forming a Disaster Recovery Plan |
|
|
437 | (2) |
|
|
439 | (2) |
|
|
441 | (12) |
|
|
441 | (4) |
|
Using the BIOS and Kernel to Tune the Disk Drives |
|
|
442 | (1) |
|
|
443 | (1) |
|
|
444 | (1) |
|
|
444 | (1) |
|
|
445 | (1) |
|
|
445 | (1) |
|
Disabling File Access Time |
|
|
445 | (1) |
|
|
445 | (1) |
|
|
446 | (2) |
|
|
448 | (4) |
|
Measuring Key Buffer Usage |
|
|
448 | (1) |
|
|
449 | (2) |
|
|
451 | (1) |
|
|
451 | (1) |
|
|
452 | (1) |
|
22 Kernel and Module Management |
|
|
453 | (20) |
|
|
454 | (4) |
|
|
455 | (2) |
|
|
457 | (1) |
|
|
458 | (2) |
|
|
460 | (1) |
|
|
461 | (1) |
|
Obtaining the Kernel Sources |
|
|
462 | (1) |
|
|
463 | (1) |
|
|
464 | (6) |
|
Using xconfig to Configure the Kernel |
|
|
467 | (3) |
|
Creating an Initial RAM Disk Image |
|
|
470 | (1) |
|
When Something Goes Wrong |
|
|
470 | (2) |
|
|
471 | (1) |
|
Runtime Errors, Boot Loader Problems, and Kernel Oops |
|
|
472 | (1) |
|
|
472 | (1) |
Part IV Ubuntu as a Server |
|
|
23 Sharing Files and Printers |
|
|
473 | (16) |
|
Using the Network File System |
|
|
474 | (2) |
|
Installing and Starting or Stopping NFS |
|
|
474 | (1) |
|
|
474 | (1) |
|
|
475 | (1) |
|
|
476 | (7) |
|
Manually Configuring Samba with /etc/samba/smb.conf |
|
|
478 | (3) |
|
Testing Samba with the testparm Command |
|
|
481 | (1) |
|
Starting, Stopping, and Restarting the smbd Daemon |
|
|
481 | (1) |
|
|
482 | (1) |
|
Network and Remote Printing with Ubuntu |
|
|
483 | (5) |
|
Creating Network Printers |
|
|
483 | (2) |
|
Using the Common UNIX Printing System GUI |
|
|
485 | (1) |
|
Avoiding Printer Support Problems |
|
|
486 | (2) |
|
|
488 | (1) |
|
24 Apache Web Server Management |
|
|
489 | (26) |
|
About the Apache Web Server |
|
|
489 | (1) |
|
Installing the Apache Server |
|
|
490 | (2) |
|
Starting and Stopping Apache |
|
|
491 | (1) |
|
Runtime Server Configuration Settings |
|
|
492 | (6) |
|
Runtime Configuration Directives |
|
|
492 | (1) |
|
|
493 | (2) |
|
Apache Multiprocessing Modules |
|
|
495 | (1) |
|
Using .htaccess Configuration Files |
|
|
496 | (2) |
|
File System Authentication and Access Control |
|
|
498 | (4) |
|
Restricting Access with Require |
|
|
498 | (1) |
|
|
499 | (2) |
|
Final Words on Access Control |
|
|
501 | (1) |
|
|
502 | (5) |
|
|
502 | (1) |
|
|
502 | (1) |
|
|
503 | (1) |
|
|
503 | (1) |
|
|
503 | (1) |
|
|
503 | (1) |
|
|
504 | (1) |
|
|
504 | (1) |
|
|
504 | (1) |
|
|
504 | (1) |
|
|
504 | (1) |
|
|
504 | (1) |
|
|
505 | (1) |
|
mod_info and mod_log_config |
|
|
505 | (1) |
|
mod_mime and mod_mime_magic |
|
|
505 | (1) |
|
|
505 | (1) |
|
|
505 | (1) |
|
|
505 | (1) |
|
|
506 | (1) |
|
|
506 | (1) |
|
|
506 | (1) |
|
|
506 | (1) |
|
|
506 | (1) |
|
|
506 | (1) |
|
|
507 | (1) |
|
|
507 | (1) |
|
|
507 | (2) |
|
Address-Based Virtual Hosts |
|
|
507 | (1) |
|
|
508 | (1) |
|
|
509 | (1) |
|
|
510 | (3) |
|
|
513 | (2) |
|
25 Nginx Web Server Management |
|
|
515 | (12) |
|
About the Nginx Web Server |
|
|
515 | (2) |
|
Installing the Nginx Server |
|
|
517 | (1) |
|
Installing from the Ubuntu Repositories |
|
|
517 | (1) |
|
Building the Source Yourself |
|
|
517 | (1) |
|
Configuring the Nginx Server |
|
|
518 | (3) |
|
|
521 | (1) |
|
|
522 | (1) |
|
Adding and Configuring Modules |
|
|
523 | (1) |
|
|
524 | (2) |
|
|
526 | (1) |
|
|
527 | (4) |
|
|
527 | (1) |
|
|
528 | (1) |
|
|
528 | (1) |
|
|
529 | (1) |
|
|
529 | (1) |
|
|
530 | (1) |
|
|
530 | (1) |
|
27 Remote File Serving with FTP |
|
|
531 | (10) |
|
|
531 | (2) |
|
Choosing an Authenticated or Anonymous Server |
|
|
532 | (1) |
|
Ubuntu FTP Server Packages |
|
|
532 | (1) |
|
|
532 | (1) |
|
|
533 | (1) |
|
|
534 | (2) |
|
Configuring the Very Secure FTP Server |
|
|
536 | (3) |
|
Controlling Anonymous Access |
|
|
537 | (1) |
|
Other vsftpd Server Configuration Files |
|
|
537 | (2) |
|
Using the ftphosts File to Allow or Deny FTP Server Connection |
|
|
539 | (1) |
|
|
540 | (1) |
|
|
541 | (20) |
|
How Email Is Sent and Received |
|
|
541 | (5) |
|
|
542 | (2) |
|
|
544 | (1) |
|
|
544 | (1) |
|
|
545 | (1) |
|
Basic Postfix Configuration and Operation |
|
|
546 | (5) |
|
|
548 | (1) |
|
|
549 | (1) |
|
Setting Message Delivery Intervals |
|
|
549 | (1) |
|
|
550 | (1) |
|
Forwarding Email with Aliases |
|
|
550 | (1) |
|
Using Fetchmail to Retrieve Mail |
|
|
551 | (4) |
|
|
551 | (1) |
|
|
551 | (4) |
|
Choosing a Mail Delivery Agent |
|
|
555 | (1) |
|
|
555 | (1) |
|
|
555 | (1) |
|
|
556 | (1) |
|
|
556 | (1) |
|
|
556 | (1) |
|
Alternatives to Microsoft Exchange Server |
|
|
556 | (2) |
|
Microsoft Exchange Server/Outlook Client |
|
|
557 | (1) |
|
|
557 | (1) |
|
|
557 | (1) |
|
|
558 | (1) |
|
|
558 | (1) |
|
|
558 | (1) |
|
|
558 | (3) |
|
29 Proxying, Reverse Proxying, and Virtual Private Networks (VPN) |
|
|
561 | (16) |
|
|
561 | (1) |
|
|
562 | (1) |
|
|
562 | (1) |
|
|
563 | (4) |
|
Specifying Client IP Addresses |
|
|
567 | (1) |
|
|
568 | (2) |
|
Virtual Private Networks (VPN) |
|
|
570 | (5) |
|
|
571 | (2) |
|
|
573 | (2) |
|
|
575 | (2) |
|
30 Administering Relational Database Services |
|
|
577 | (26) |
|
A Brief Review of Database Basics |
|
|
578 | (8) |
|
How Relational Databases Work |
|
|
580 | (2) |
|
|
582 | (1) |
|
|
582 | (1) |
|
Inserting Data into Tables |
|
|
583 | (1) |
|
Retrieving Data from a Database |
|
|
584 | (2) |
|
Choosing a Database: MySQL Versus PostgreSQL |
|
|
586 | (2) |
|
|
586 | (1) |
|
|
586 | (1) |
|
ACID Compliance in Transaction Processing to Protect Data Integrity |
|
|
587 | (1) |
|
|
588 | (1) |
|
Procedural Languages and Triggers |
|
|
588 | (1) |
|
|
588 | (4) |
|
Setting a Password for the MySQL Root User |
|
|
589 | (1) |
|
Creating a Database in MySQL |
|
|
590 | (2) |
|
|
592 | (3) |
|
Initializing the Data Directory in PostgreSQL |
|
|
592 | (1) |
|
Creating a Database in PostgreSQL |
|
|
593 | (1) |
|
Creating Database Users in PostgreSQL |
|
|
593 | (1) |
|
Deleting Database Users in PostgreSQL |
|
|
594 | (1) |
|
Granting and Revoking Privileges in PostgreSQL |
|
|
594 | (1) |
|
|
595 | (6) |
|
|
595 | (2) |
|
Local GUI Client Access to a Database |
|
|
597 | (1) |
|
|
597 | (1) |
|
The MySQL Command-Line Client |
|
|
598 | (2) |
|
The PostgreSQL Command-Line Client |
|
|
600 | (1) |
|
|
600 | (1) |
|
|
601 | (2) |
|
|
603 | (12) |
|
|
606 | (2) |
|
|
606 | (1) |
|
|
607 | (1) |
|
|
607 | (1) |
|
|
608 | (1) |
|
|
608 | (1) |
|
|
608 | (3) |
|
|
609 | (1) |
|
|
610 | (1) |
|
|
610 | (1) |
|
|
611 | (1) |
|
|
611 | (1) |
|
|
611 | (1) |
|
|
612 | (1) |
|
|
612 | (1) |
|
|
612 | (1) |
|
|
612 | (1) |
|
|
613 | (1) |
|
|
613 | (2) |
|
32 Lightweight Directory Access Protocol (LDAP) |
|
|
615 | (8) |
|
|
616 | (3) |
|
|
616 | (1) |
|
Populating Your Directory |
|
|
617 | (2) |
|
|
619 | (2) |
|
|
620 | (1) |
|
|
621 | (1) |
|
|
621 | (1) |
|
|
622 | (1) |
|
33 Linux Terminal Server Project (LTSP) |
|
|
623 | (8) |
|
|
624 | (3) |
|
|
627 | (1) |
|
|
628 | (1) |
|
|
629 | (2) |
|
34 VirtuallzatIon on Ubuntu |
|
|
631 | (10) |
|
|
633 | (4) |
|
|
637 | (2) |
|
|
639 | (1) |
|
|
639 | (1) |
|
|
639 | (2) |
|
|
641 | (14) |
|
|
642 | (2) |
|
Software as a Service (SaaS) |
|
|
643 | (1) |
|
Platform as a Service (PaaS) |
|
|
643 | (1) |
|
Infrastructure as a Service (IaaS) |
|
|
643 | (1) |
|
Metal as a Service (MaaS) |
|
|
643 | (1) |
|
|
644 | (1) |
|
Deploy/Install Basics: Public, Private, or Hybrid? |
|
|
644 | (1) |
|
Ubuntu Cloud and OpenStack |
|
|
645 | (2) |
|
Compute Infrastructure (Nova) |
|
|
645 | (1) |
|
Storage Infrastructure (Swift) |
|
|
646 | (1) |
|
Networking Service (Neutron) |
|
|
646 | (1) |
|
Identity Service (Keystone) |
|
|
646 | (1) |
|
|
647 | (1) |
|
|
647 | (1) |
|
|
647 | (1) |
|
|
647 | (6) |
|
|
648 | (2) |
|
|
650 | (2) |
|
|
652 | (1) |
|
|
653 | (1) |
|
Juju on Mac OS X and Windows |
|
|
653 | (1) |
|
Mojo: Continuous Delivery for Juju |
|
|
653 | (1) |
|
|
653 | (1) |
|
Ubuntu Metal as a Service (MaaS) |
|
|
653 | (1) |
|
|
654 | (1) |
|
|
654 | (1) |
|
36 Managing Sets of Servers |
|
|
655 | (4) |
|
|
655 | (1) |
|
|
656 | (1) |
|
|
656 | (1) |
|
|
656 | (1) |
|
|
657 | (1) |
|
|
657 | (1) |
|
|
657 | (2) |
|
37 Name Serving with the Domain Name System (DNS) |
|
|
659 | (10) |
|
Understanding Domain Names |
|
|
661 | (4) |
|
|
661 | (1) |
|
|
662 | (3) |
|
Setting Up a DNS Server with BIND |
|
|
665 | (2) |
|
|
667 | (2) |
Part V Programming Linux |
|
|
38 Using Programming Tools for Ubuntu |
|
|
669 | (12) |
|
|
670 | (1) |
|
Using the C Programming Project Management Tools Provided with Ubuntu |
|
|
671 | (4) |
|
Building Programs with make |
|
|
671 | (1) |
|
|
671 | (2) |
|
Using the autoconf Utility to Configure Code |
|
|
673 | (1) |
|
|
674 | (1) |
|
|
675 | (1) |
|
Graphical Development Tools |
|
|
676 | (4) |
|
Using the KDevelop Client |
|
|
676 | (1) |
|
The Glade Client for Developing in GNOME |
|
|
677 | (1) |
|
|
678 | (2) |
|
|
680 | (1) |
|
39 Opportunistic Development |
|
|
681 | (12) |
|
|
681 | (5) |
|
Managing Software Projects with Git |
|
|
682 | (1) |
|
Managing Software Projects with Bazaar |
|
|
683 | (1) |
|
Managing Software Projects with Subversion |
|
|
684 | (1) |
|
Managing Software Projects with Mercurial |
|
|
685 | (1) |
|
Introduction to Opportunistic Development |
|
|
686 | (1) |
|
|
687 | (1) |
|
|
688 | (1) |
|
|
689 | (1) |
|
|
689 | (3) |
|
|
692 | (1) |
|
40 Helping with Ubuntu Development |
|
|
693 | (10) |
|
Introduction to Ubuntu Development |
|
|
694 | (1) |
|
Setting Up Your Development System |
|
|
695 | (3) |
|
Install Basic Packages and Configure |
|
|
695 | (1) |
|
Create a Launchpad Account |
|
|
696 | (1) |
|
Set Up Your Environment to Work with Launchpad |
|
|
696 | (2) |
|
Developing Apps and Scopes |
|
|
698 | (1) |
|
Fixing Bugs and Packaging |
|
|
698 | (3) |
|
Finding Bugs to Fix with Harvest |
|
|
701 | (1) |
|
|
701 | (1) |
|
|
702 | (1) |
|
41 Helping with Ubuntu Testing and QA |
|
|
703 | (6) |
|
|
703 | (2) |
|
|
704 | (1) |
|
|
705 | (1) |
|
|
705 | (1) |
|
|
705 | (3) |
|
|
708 | (1) |
|
42 Using Popular Programming Languages |
|
|
709 | (14) |
|
|
710 | (1) |
|
|
710 | (1) |
|
|
711 | (1) |
|
|
712 | (1) |
|
|
712 | (1) |
|
|
713 | (1) |
|
|
713 | (1) |
|
|
713 | (1) |
|
|
714 | (1) |
|
|
714 | (1) |
|
|
715 | (1) |
|
|
715 | (1) |
|
|
715 | (1) |
|
|
716 | (1) |
|
|
716 | (1) |
|
|
717 | (1) |
|
|
717 | (1) |
|
|
718 | (1) |
|
|
718 | (1) |
|
|
719 | (1) |
|
|
719 | (1) |
|
|
719 | (1) |
|
|
720 | (1) |
|
|
720 | (1) |
|
|
720 | (1) |
|
|
720 | (1) |
|
|
721 | (2) |
|
43 Beginning Mobile Development for Android |
|
|
723 | (6) |
|
|
724 | (1) |
|
|
724 | (1) |
|
|
724 | (1) |
|
|
724 | (1) |
|
|
724 | (1) |
|
|
725 | (1) |
|
|
725 | (1) |
|
Installing Android Studio |
|
|
725 | (4) |
|
|
725 | (1) |
|
|
725 | (2) |
|
Create Your First Application |
|
|
727 | (1) |
|
|
728 | (1) |
|
44 Developing for Ubuntu Mobile/Touch |
|
|
729 | (4) |
|
|
730 | (1) |
|
Create Your First Application |
|
|
730 | (1) |
|
|
731 | (2) |
Index |
|
733 | |