About the Author |
|
xv | |
About the Technical Reviewer |
|
xvii | |
Introduction |
|
xix | |
|
|
1 | (24) |
|
Preparing for the Installation |
|
|
1 | (1) |
|
Starting the Ubuntu Server Installation Process |
|
|
2 | (22) |
|
Configuring the Server's Hard Drive |
|
|
8 | (14) |
|
Completing the Installation |
|
|
22 | (2) |
|
|
24 | (1) |
|
Getting the Most Out of the Command Line |
|
|
25 | (22) |
|
|
25 | (1) |
|
|
26 | (4) |
|
Using Bash to Best Effect |
|
|
26 | (3) |
|
Managing Bash with Key Sequences |
|
|
29 | (1) |
|
Performing Basic File System Management Tasks |
|
|
30 | (7) |
|
|
30 | (1) |
|
|
31 | (2) |
|
Viewing the Content of Text Files |
|
|
33 | (2) |
|
Finding Files That Contain Specific Text |
|
|
35 | (1) |
|
|
36 | (1) |
|
|
37 | (3) |
|
|
37 | (1) |
|
|
37 | (3) |
|
|
40 | (1) |
|
|
40 | (3) |
|
|
41 | (1) |
|
|
42 | (1) |
|
|
42 | (1) |
|
|
42 | (1) |
|
|
43 | (3) |
|
|
43 | (2) |
|
|
45 | (1) |
|
Getting Information on Installed Packages |
|
|
46 | (1) |
|
|
46 | (1) |
|
Performing Essential System Administration Tasks |
|
|
47 | (26) |
|
|
47 | (13) |
|
Software Repositories and Package Databases |
|
|
48 | (1) |
|
Package Management Utilities |
|
|
49 | (8) |
|
Installing Software from Tarballs |
|
|
57 | (1) |
|
Configuring a Graphical User Interface |
|
|
58 | (2) |
|
|
60 | (4) |
|
Making File Backups with tar |
|
|
60 | (3) |
|
Making Device Backups Using dd |
|
|
63 | (1) |
|
|
64 | (8) |
|
|
64 | (5) |
|
|
69 | (1) |
|
|
69 | (3) |
|
|
72 | (1) |
|
Performing File System Management Tasks |
|
|
73 | (34) |
|
|
73 | (8) |
|
|
73 | (4) |
|
|
77 | (1) |
|
Automating Mounts with /etc/fstab |
|
|
78 | (3) |
|
Checking File System Integrity |
|
|
81 | (1) |
|
|
82 | (3) |
|
|
82 | (1) |
|
Working with Symbolic Links |
|
|
82 | (2) |
|
|
84 | (1) |
|
|
85 | (17) |
|
|
85 | (9) |
|
|
94 | (3) |
|
Working with Logical Volumes |
|
|
97 | (5) |
|
Doing Magic on Your File Systems with dd |
|
|
102 | (3) |
|
|
105 | (2) |
|
Configuring Your Server for Security |
|
|
107 | (44) |
|
|
107 | (10) |
|
Commands for User Management |
|
|
108 | (2) |
|
|
110 | (2) |
|
Modifying and Deleting User Accounts |
|
|
112 | (1) |
|
Behind the Commands: Configuration Files |
|
|
112 | (5) |
|
|
117 | (2) |
|
Commands for Group Management |
|
|
117 | (1) |
|
Behind the Commands: /etc/group |
|
|
117 | (1) |
|
Managing the User's Shell Environment |
|
|
118 | (1) |
|
|
119 | (3) |
|
Read, Write, and Execute: The Three Basic Linux Permissions |
|
|
119 | (1) |
|
Permissions and the Concept of Ownership |
|
|
119 | (3) |
|
Working with Advanced Linux Permissions |
|
|
122 | (4) |
|
|
124 | (1) |
|
Using umask to Set Default Permissions |
|
|
125 | (1) |
|
Working with Access Control Lists |
|
|
126 | (5) |
|
Preparing the File System for ACLs |
|
|
127 | (2) |
|
|
129 | (1) |
|
|
130 | (1) |
|
Apply Quota to Allow a Maximum Amount of Files |
|
|
131 | (3) |
|
Installing the Quota Software |
|
|
132 | (1) |
|
Preparing the File System for Quota |
|
|
132 | (1) |
|
|
132 | (1) |
|
Setting Quota for Users and Groups |
|
|
133 | (1) |
|
Understanding Pluggable Authentication Modules |
|
|
134 | (6) |
|
Creating a Default Policy for Security |
|
|
136 | (1) |
|
|
136 | (4) |
|
Configuring Administrator Tasks with sudo |
|
|
140 | (1) |
|
An Introduction to Setting Up the Netfilter Firewall with iptables |
|
|
141 | (8) |
|
Netfilter Building Blocks |
|
|
142 | (2) |
|
Using iptables to Create a Firewall |
|
|
144 | (5) |
|
|
149 | (2) |
|
Setting the System to Your Hand |
|
|
151 | (34) |
|
Process Monitoring and Management |
|
|
151 | (10) |
|
Different Kinds of Processes |
|
|
151 | (1) |
|
Foreground and Background |
|
|
152 | (2) |
|
|
154 | (3) |
|
Other Tools to Monitor System Activity |
|
|
157 | (3) |
|
|
160 | (1) |
|
Executing Processes Automatically |
|
|
161 | (3) |
|
|
161 | (2) |
|
|
163 | (1) |
|
Tuning the Boot Procedure |
|
|
164 | (10) |
|
Managing the GRUB Boot Loader |
|
|
164 | (1) |
|
The GRUB Configuration File |
|
|
165 | (2) |
|
|
167 | (1) |
|
Working with the GRUB Boot Menu |
|
|
168 | (1) |
|
|
169 | (2) |
|
|
171 | (2) |
|
Making Service Management Easier |
|
|
173 | (1) |
|
|
174 | (6) |
|
|
174 | (4) |
|
Installing Your Own Custom Kernel |
|
|
178 | (2) |
|
Hardware Management with udev |
|
|
180 | (3) |
|
|
183 | (2) |
|
Running It Anyway You Like |
|
|
185 | (32) |
|
|
185 | (9) |
|
To Script or Not to Script? |
|
|
185 | (1) |
|
|
186 | (1) |
|
Basic Elements of a Shell Script |
|
|
187 | (1) |
|
|
188 | (2) |
|
Making a Script Interactive |
|
|
190 | (1) |
|
|
191 | (3) |
|
|
194 | (5) |
|
|
194 | (1) |
|
|
195 | (1) |
|
|
195 | (2) |
|
Pattern-Matching Operators |
|
|
197 | (2) |
|
Performing Calculations in Scripts |
|
|
199 | (4) |
|
|
203 | (8) |
|
|
204 | (3) |
|
|
207 | (2) |
|
|
209 | (1) |
|
|
209 | (1) |
|
|
210 | (1) |
|
|
211 | (1) |
|
|
212 | (1) |
|
A Complex Scripting Example |
|
|
213 | (2) |
|
|
215 | (2) |
|
|
217 | (38) |
|
Configuring the Network Card |
|
|
217 | (13) |
|
Using ifup, ifdown, and Related Tools |
|
|
219 | (1) |
|
|
219 | (2) |
|
|
221 | (3) |
|
|
224 | (3) |
|
|
227 | (1) |
|
Configuring the DNS Resolver |
|
|
228 | (2) |
|
Configuring Network Card Properties with the ethtool Command |
|
|
230 | (1) |
|
Troubleshooting Network Connections |
|
|
230 | (13) |
|
|
231 | (1) |
|
|
232 | (2) |
|
Testing Availability of Services |
|
|
234 | (4) |
|
Monitoring the Network Interface |
|
|
238 | (2) |
|
Monitoring Network Traffic |
|
|
240 | (3) |
|
Connecting Remotely with SSH |
|
|
243 | (2) |
|
Working with Public/Private Key Pairs |
|
|
244 | (1) |
|
Working with Secure Shell |
|
|
244 | (1) |
|
|
245 | (2) |
|
Using Key-Based Authentication |
|
|
247 | (4) |
|
A Short Introduction to Cryptography |
|
|
248 | (1) |
|
Using Public/Private Key--Based Authentication in an SSH Environment |
|
|
248 | (1) |
|
Setting Up SSH for Key-Based Authentication |
|
|
249 | (1) |
|
Caching Keys with ssh-agent |
|
|
250 | (1) |
|
Tunneling Traffic with SSH |
|
|
251 | (2) |
|
|
251 | (1) |
|
Generic TCP Port Forwarding |
|
|
252 | (1) |
|
|
253 | (2) |
|
Configuring Network Infrastructure Services |
|
|
255 | (32) |
|
|
255 | (14) |
|
Methods of Name Resolution |
|
|
255 | (2) |
|
Structure of the DNS Hierarchy |
|
|
257 | (3) |
|
Introducing Forward and Reverse DNS |
|
|
260 | (1) |
|
|
261 | (6) |
|
Configuring Reversed Lookup |
|
|
267 | (1) |
|
|
268 | (1) |
|
|
269 | (7) |
|
Understanding the DHCP Protocol |
|
|
269 | (1) |
|
Creating the DHCP Server Configuration |
|
|
269 | (1) |
|
|
270 | (1) |
|
The /etc/dhcpd.conf Configuration File |
|
|
270 | (3) |
|
Advanced DHCP Configuration Options |
|
|
273 | (2) |
|
|
275 | (1) |
|
|
276 | (1) |
|
|
276 | (6) |
|
Configuring a Stand-Alone NTP Time Server |
|
|
277 | (1) |
|
Pulling or Pushing the Time |
|
|
278 | (1) |
|
Configuring an NTP Client |
|
|
279 | (1) |
|
Checking NTP Synchronization Status |
|
|
279 | (1) |
|
Customizing Your NTP Server |
|
|
280 | (1) |
|
|
281 | (1) |
|
Starting Services with xinetd |
|
|
282 | (4) |
|
Setting up xinetd by Hand |
|
|
282 | (2) |
|
Tuning Access to Services with TCP Wrapper |
|
|
284 | (2) |
|
|
286 | (1) |
|
Using Ubuntu Server As a File and Print Server |
|
|
287 | (26) |
|
Setting Up a CUPS Print Server |
|
|
287 | (6) |
|
|
288 | (2) |
|
|
290 | (1) |
|
|
291 | (1) |
|
|
292 | (1) |
|
|
293 | (6) |
|
|
294 | (1) |
|
Understanding How the NFS Works |
|
|
294 | (2) |
|
Configuring an NFS Server |
|
|
296 | (2) |
|
Configuring an NFS Client |
|
|
298 | (1) |
|
Monitoring the NFS Server |
|
|
299 | (1) |
|
|
299 | (12) |
|
Samba Server Possibilities and Impossibilities |
|
|
300 | (1) |
|
Configuring the Samba Server |
|
|
300 | (5) |
|
Integrating CUPS with Samba |
|
|
305 | (2) |
|
Setting Up Samba As a Domain Controller |
|
|
307 | (2) |
|
Client Access to the Samba Server |
|
|
309 | (2) |
|
|
311 | (2) |
|
|
313 | (16) |
|
|
313 | (5) |
|
|
314 | (1) |
|
Starting, Stopping, and Testing the Apache Web Server |
|
|
314 | (2) |
|
Exploring the Configuration Files |
|
|
316 | (1) |
|
The Structure of the Apache Configuration Files |
|
|
317 | (1) |
|
Checking the Configuration |
|
|
318 | (1) |
|
Working with Virtual Hosts |
|
|
318 | (2) |
|
Configuring Virtual Hosts |
|
|
319 | (1) |
|
Managing Access to the Web Server |
|
|
320 | (3) |
|
Configuring Host-Based Access Restrictions |
|
|
320 | (2) |
|
Configuring User-Based Access Restrictions |
|
|
322 | (1) |
|
Some Words on Apache Performance Tuning |
|
|
323 | (1) |
|
|
324 | (1) |
|
|
325 | (1) |
|
Setting the MySQL Root Password |
|
|
325 | (1) |
|
Creating a MySQL Database |
|
|
326 | (1) |
|
|
326 | (2) |
|
Configuring the pure-ftpd Server |
|
|
326 | (2) |
|
|
328 | (1) |
|
|
329 | (14) |
|
Understanding Virtualization |
|
|
329 | (3) |
|
|
329 | (1) |
|
Approaches to Virtualization |
|
|
330 | (2) |
|
Installing Virtual Machines with KVM |
|
|
332 | (3) |
|
Setting Up KVM on Ubuntu Server |
|
|
332 | (1) |
|
Installing Windows As a Guest Operating System on KVM |
|
|
333 | (1) |
|
Installing Ubuntu Server As a Guest Operating System on KVM |
|
|
334 | (1) |
|
Setting Up Networking in KVM Virtual Machines |
|
|
334 | (1) |
|
Installing Virtual Machines Using Xen |
|
|
335 | (7) |
|
Setting Up Xen on Ubuntu Server |
|
|
336 | (2) |
|
Installing Windows As a Guest Operating System on Xen |
|
|
338 | (2) |
|
Installing Ubuntu Server As a Guest Operating System on Xen |
|
|
340 | (1) |
|
Using Xen Management Commands |
|
|
341 | (1) |
|
Ubuntu Server in a VMware Environment |
|
|
342 | (1) |
|
|
342 | (1) |
Index |
|
343 | |