Prentice Hall A Practical Guide To Ubuntu Linux Dec 2007 ISBN 013236039X pdf

Praise for A Practical Guide to Ubuntu Linux

®

“I am so impressed by how Mark Sobell can approach a complex topic
in such an understandable manner. His command examples are especially useful in providing a novice (or even advanced) administrator
with a cookbook on how to accomplish real-world tasks on Linux. He
is truly an inspired technical writer!”
—George Vish II
Senior Education Consultant
Hewlett-Packard Company
“Overall, I think it’s a great, comprehensive Ubuntu book that’ll be a
valuable resource for people of all technical levels.”
—John Dong
Ubuntu Forum Council Member
Backports Team Leader
“The JumpStart sections really offer a quick way to get things up and
running, allowing you to dig into the details of his books later.”
—Scott Mann
Aztek Networks
“Ubuntu is gaining popularity at the rate alcohol did during prohibition,

and it’s great to see a well-known author write a book on the latest and
greatest version. Not only does it contain Ubuntu-specific information,
but it also touches on general computer-related topics, which will help
the average computer user to better understand what’s going on in the
background. Great work, Mark!”
—Daniel R. Arfsten
Pro/ENGINEER Drafter/Designer
“I read a lot of Linux technical information every day, but I’m rarely
impressed by tech books. I usually prefer online information sources
instead. Mark Sobell’s books are a notable exception. They’re clearly
written, technically accurate, comprehensive-and actually enjoyable
to read.”
—Matthew Miller
Senior Systems Analyst/Administrator
BU Linux Project
Boston University Office
of Information Technology

“I would so love to be able to use this book to teach a class about not
just Ubuntu or Linux but about computers in general. It is thorough

and well written with good illustrations that explain important concepts for computer usage.”
—Nathan Eckenrode
New York Local Community Team

Praise for Other Books by Mark Sobell
“I currently own one of your books, A Practical Guide to Linux®. I
believe this book is one of the most comprehensive and, as the title
says, practical guides to Linux I have ever read. I consider myself a
novice and I come back to this book over and over again.”
—Albert J. Nguyen
“Thank you for writing a book to help me get away from Windows XP
and to never touch Windows Vista. The book is great; I am learning a
lot of new concepts and commands. Linux is definitely getting easier
to use.”
—James Moritz
“I have been wanting to make the jump to Linux but did not have the
guts to do so-until I saw your familiarly titled A Practical Guide to Red
Hat® Linux® at the bookstore. I picked up a copy and am eagerly looking forward to regaining my freedom.”
—Carmine Stoffo
Machine and Process Designer

to pharmaceutical industry
“I am currently reading A Practical Guide to Red Hat® Linux® and am
finally understanding the true power of the command line. I am new to
Linux and your book is a treasure.”
—Juan Gonzalez

A Practical Guide to Ubuntu Linux

®

This page intentionally left blank

A Practical Guide to Ubuntu Linux

Mark G. Sobell

Upper Saddle River, NJ • Boston • Indianapolis • San Francisco
New York • Toronto • Montreal • London • Munich • Paris • Madrid
Capetown • Sydney • Tokyo • Singapore • Mexico City


®

Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where
those designations appear in this book, and the publisher was aware of a trademark claim, the designations have been printed
with initial capital letters or in all capitals.
Ubuntu is a registered trademark of Canonical Ltd.
The author and publisher have taken care in the preparation of this book, but make no expressed or implied warranty of any
kind and assume no responsibility for errors or omissions. No liability is assumed for incidental or consequential damages in
connection with or arising out of the use of the information or programs contained herein.
The publisher offers excellent discounts on this book when ordered in quantity for bulk purchases or special sales, which may
include electronic versions and/or custom covers and content particular to your business, training goals, marketing focus, and
branding interests. For more information, please contact:
U.S. Corporate and Government Sales
(800) 382-3419
corpsales@pearsontechgroup.com
For sales outside the United States, please contact:
International Sales
international@pearsoned.com

Visit us on the Web: www.prenhallprofessional.com

Library of Congress Cataloging-in-Publication Data
Sobell, Mark G.
A practical guide Ubuntu Linux / Mark G. Sobell.
p. cm.
Includes index.
ISBN-13: 978-0-13-236039-5 (pbk. : alk. paper)
1. Linux. 2. Operating systems (Computers) I. Title.
QA76.76.O63S59497 2008
005.4'32—dc22
2007043244
Copyright © 2008 Mark G. Sobell
All rights reserved. Printed in the United States of America. This publication is protected by copyright, and permission must be
obtained from the publisher prior to any prohibited reproduction, storage in a retrieval system, or transmission in any form or
by any means, electronic, mechanical, photocopying, recording, or likewise. For information regarding permissions, write to:
Pearson Education, Inc.
Rights and Permissions
501 Boylston Street, Suite 900
Boston, MA 02116
Fax (617) 671-3447
ISBN-13:

ISBN-10:

978-0-13-236039-5
0-13-236039-X

Text printed in the United States on recycled paper at Courier in Stoughton, Massachusetts.
First printing, December 2007

For my dad,
Morton Sobell,
who taught me to examine
the world very carefully.

This page intentionally left blank

Brief Contents
Contents xi
Preface xxxv
1


Welcome to Linux 1

PART I
2
3

PART II
4
5
6
7

Installing Ubuntu Linux

21

Installation Overview 23
Step-by-Step Installation 45

Getting Started with Ubuntu Linux


Introduction to Ubuntu Linux
The Linux Utilities 145
The Linux Filesystem 183
The Shell 219

PART III

85

87

Digging into Ubuntu Linux

8 Linux GUIs: X and GNOME 251
9 The Bourne Again Shell 275
10 Networking and the Internet 353
11 Programming the Bourne Again Shell

249


395

ix

x Brief Contents

PART IV
12
13
14
15
16
17
18

PART V
19
20
21

22
23
24
25
26
27

483

Using Clients and Setting Up Servers

OpenSSH: Secure Network Communication 707
FTP: Transferring Files Across a Network 729
exim4: Setting Up Mail Servers, Clients, and More 755
NIS: Network Information Service 781
NFS: Sharing Filesystems 799
Samba: Linux and Windows File and Printer Sharing 823
DNS/BIND: Tracking Domain Names and Addresses 845
firestarter and iptables: Setting Up a Firewall 885
Apache: Setting Up a Web Server 915


PART VI
A
B
C
D
E

System Administration

System Administration: Core Concepts 485
Files, Directories, and Filesystems 553
Downloading and Installing Software 583
Printing with CUPS 611
Building a Linux Kernel 635
Administration Tasks 657
Configuring a LAN 693

Appendixes

969

Regular Expressions 971
Help 981
Security 991
The Free Software Definition
The Linux 2.6 Kernel 1015

Glossary 1021
Index 1071

1011

705

Contents
Preface xxxvi
Chapter 1: Welcome to Linux

1

The GNU–Linux Connection 2
The History of GNU–Linux 2
The Code Is Free 4
Have Fun! 5
The Linux 2.6 Kernel 5
The Heritage of Linux: UNIX

5

What Is So Good About Linux? 6
Why Linux Is Popular with Hardware Companies and Developers 7
Linux Is Portable 8
Standards 9
The C Programming Language 9
Ubuntu Linux 10
Overview of Linux 10
Linux Has a Kernel Programming Interface 10
Linux Can Support Many Users 11
Linux Can Run Many Tasks 11
Linux Provides a Secure Hierarchical Filesystem 12
The Shell: Command Interpreter and Programming Language
A Large Collection of Useful Utilities 14
Interprocess Communication 14
System Administration 15

12

xi

xii

Contents

Additional Features of Linux 15
GUIs: Graphical User Interfaces 15
(Inter)Networking Utilities 16
Software Development 17
Conventions Used in This Book 17
Chapter Summary 20
Exercises 20

PART I

Installing Ubuntu Linux

Chapter 2: Installation Overview

21

23

The Live/Install Desktop CD/DVD 24
More Information 24
Planning the Installation 25
Considerations 25
Requirements 25
Processor Architecture 26
Interfaces: Installer and Installed System 27
Ubuntu Releases 28
Ubuntu Editions 28
Installing a Fresh Copy or Upgrading an Existing Ubuntu System?
Setting Up the Hard Disk 30
RAID 34
LVM: Logical Volume Manager 35
The Installation Process 36
Downloading and Burning a CD/DVD 37
The Easy Way to Download a CD ISO Image File 37
Other Ways to Download a CD/DVD ISO Image File 37
Verifying an ISO Image File 40
Burning the CD/DVD 40
Gathering Information About the System 41
Chapter Summary 42
Exercises 43
Advanced Exercises 43

Chapter 3: Step-by-Step Installation

45

Basic Installation from the Live/Install Desktop CD/DVD
Booting the System 46
Checking the CD/DVD for Defects 47
Live Session 47

46

29

Contents xiii

Graphical Partitioners 53
gparted: the GNOME Partition Editor 53
ubiquity: Setting Up Partitions 56
Upgrading to a New Release 59
Installing KDE 60
Setting Up a Dual-Boot System 61
Creating Free Space on a Windows System 61
Installing Ubuntu Linux as the Second Operating System 61
Advanced Installation 62
The Live/Install Desktop CD: The Initial Install Screen 62
The Alternate CD Initial Install Screen Menu 65
The Server CD Initial Install Screen Menu 66
The DVD 67
The Ubuntu Textual Installer 67
The X Window System 74
displayconfig-gtk: Configures the Display 75
The xorg.conf File 77
gdm: Displays a Graphical Login 82
Chapter Summary 83
Exercises 83
Advanced Exercises 84

PART II

Getting Started with Ubuntu Linux

Chapter 4: Introduction to Ubuntu Linux
Curbing Your Power: root Privileges/sudo 88
A Tour of the Ubuntu Linux Desktop 89
Logging In on the System 89
Introduction 90
Launching Programs from the Desktop 91
Switching Workspaces 93
Setting Personal Preferences 94
Mouse Preferences 95
Working with Windows 96
Using Nautilus to Work with Files 96
The Update Notifier 100
Changing Appearances (Themes) 102
Session Management 104
Getting Help 104
Feel Free to Experiment 105
Logging Out 105

87

85

xiv

Contents

Getting the Most out of the Desktop 105
GNOME Desktop Terminology 105
Opening Files 106
Panels 107
The Main Menu 110
Windows 111
The Object Context Menu 115
Updating, Installing, and Removing Software Packages 119
Software Sources Window 119
Add/Remove Applications 120
Synaptic: Finds, Installs, and Removes Software 121
Where to Find Documentation 124
Ubuntu Help Center 124
man: Displays the System Manual 124
info: Displays Information About Utilities 126
The ––help Option 129
HOWTOs: Finding Out How Things Work 129
Getting Help with the System 130
More About Logging In 132
The Login Screen 132
What to Do if You Cannot Log In 133
Logging In Remotely: Terminal Emulators, ssh, and Dial-Up Connections
Logging In from a Terminal (Emulator) 134
Changing Your Password 135
Using Virtual Consoles 136
Working from the Command Line 136
Correcting Mistakes 137
Repeating/Editing Command Lines 139
Controlling Windows: Advanced Operations 139
Changing the Input Focus 139
Changing the Resolution of the Display 140
The Window Manager 141
Chapter Summary 142
Exercises 143
Advanced Exercises 144

Chapter 5: The Linux Utilities

145

Special Characters 146
Basic Utilities 147
ls: Lists the Names of Files 147
cat: Displays a Text File 147
rm: Deletes a File 148
less Is more: Display a Text File One Screen at a Time
hostname: Displays the System Name 149

148

133

Contents xv

Working with Files 149
cp: Copies a File 149
mv: Changes the Name of a File 150
lpr: Prints a File 151
grep: Searches for a String 151
head: Displays the Beginning of a File 152
tail: Displays the End of a File 152
sort: Displays a File in Order 153
uniq: Removes Duplicate Lines from a File 154
diff: Compares Two Files 154
file: Tests the Contents of a File 155
| (Pipe): Communicates Between Processes 156
Four More Utilities 157
echo: Displays Text 157
date: Displays the Time and Date 157
script: Records a Shell Session 158
unix2dos: Converts Linux and Macintosh Files to Windows Format
Compressing and Archiving Files 159
bzip2: Compresses a File 160
bunzip2 and bzcat: Decompress a File 160
gzip: Compresses a File 161
tar: Packs and Unpacks Archives 161
Locating Commands 164
which and whereis: Locate a Utility 164
apropos: Searches for a Keyword 165
slocate: Searches for a File 166
Obtaining User and System Information 166
who: Lists Users on the System 167
finger: Lists Users on the System 167
w: Lists Users on the System 169
Communicating with Other Users 170
write: Sends a Message 170
mesg: Denies or Accepts Messages 171
Email 171
Tutorial: Creating and Editing a File with vim 172
Starting vim 172
Command and Input Modes 174
Entering Text 175
Getting Help 176
Ending the Editing Session 178
The compatible Parameter 179
Chapter Summary 179
Exercises 181
Advanced Exercises 182

159

xvi

Contents

Chapter 6: The Linux Filesystem

183

The Hierarchical Filesystem 184
Directory Files and Ordinary Files 184
Filenames 185
The Working Directory 188
Your Home Directory 188
Pathnames 189
Absolute Pathnames 189
Relative Pathnames 190
Directory Commands 191
mkdir: Creates a Directory 191
Important Standard Directories and Files 194
Working with Directories 196
rmdir: Deletes a Directory 196
Using Pathnames 197
mv, cp: Move or Copy Files 197
mv: Moves a Directory 198
Access Permissions 199
ls –l: Displays Permissions 199
chmod: Changes Access Permissions 200
Setuid and Setgid Permissions 201
Directory Access Permissions 202
ACLs: Access Control Lists 203
Enabling ACLs 204
Working with Access Rules 204
Setting Default Rules for a Directory 207
Links 209
Hard Links 210
Symbolic Links 212
rm: Removes a Link 214
Chapter Summary 214
Exercises 216
Advanced Exercises 218

Chapter 7: The Shell

219

The Command Line 220
Syntax 220
Processing the Command Line 223
Executing the Command Line 225
Editing the Command Line 225
Standard Input and Standard Output 226
The Screen as a File 226
The Keyboard and Screen as Standard Input and Standard Output
Redirection 228
Pipes 234

227

Contents xvii

Running a Program in the Background 237
Filename Generation/Pathname Expansion 239
The ? Special Character 239
The
Special Character 240
The [ ] Special Characters 241
Builtins 243
Chapter Summary 244
Utilities and Builtins Introduced in This Chapter
Exercises 245
Advanced Exercises 247

*

PART III

245

Digging into Ubuntu Linux

Chapter 8: Linux GUIs: X and GNOME

251

X Window System 252
Using X 254
Window Managers 259
The Nautilus File Browser Window 260
The View Pane 261
The Side Pane 261
Control Bars 262
Menubar 263
GNOME Utilities 266
Deskbar Applet 266
Font Preferences 267
Pick a Font Window 268
Pick a Color Window 268
Run Application Window 269
Searching for Files 269
GNOME Terminal Emulator/Shell 270
Chapter Summary 271
Exercises 272
Advanced Exercises 272

Chapter 9: The Bourne Again Shell
Background 276
Shell Basics 277
Startup Files 277
Commands That Are Symbols 280
Redirecting Standard Error 280
Writing a Simple Shell Script 282
Separating and Grouping Commands 286
Job Control 290
Manipulating the Directory Stack 292

275

249

xviii

Contents

Parameters and Variables 295
User-Created Variables 296
Variable Attributes 299
Keyword Variables 301
Special Characters 309
Processes 310
Process Structure 310
Process Identification 310
Executing a Command 312
History 312
Variables That Control History 312
Reexecuting and Editing Commands 314
The Readline Library 322
Aliases 328
Single Versus Double Quotation Marks in Aliases
Examples of Aliases 330
Functions 331
Controlling bash Features and Options 334
Command Line Options 334
Shell Features 334
Processing the Command Line 338
History Expansion 338
Alias Substitution 338
Parsing and Scanning the Command Line 338
Command Line Expansion 339
Chapter Summary 347
Exercises 349
Advanced Exercises 351

329

Chapter 10: Networking and the Internet
Types of Networks and How They Work 355
Broadcast Networks 356
Point-to-Point Networks 356
Switched Networks 356
LAN: Local Area Network 357
WAN: Wide Area Network 358
Internetworking Through Gateways and Routers 358
Network Protocols 361
Host Address 363
CIDR: Classless Inter-Domain Routing 367
Hostnames 368
Communicate Over a Network 370
finger: Displays Information About Remote Users 370
Sending Mail to a Remote User 371
Mailing List Servers 372

353

Contents xix

Network Utilities 372
Trusted Hosts 372
OpenSSH Tools 373
telnet: Logs In on a Remote System 373
ftp: Transfers Files Over a Network 375
ping: Tests a Network Connection 375
traceroute: Traces a Route Over the Internet 376
host and dig: Query Internet Nameservers 378
jwhois: Looks Up Information About an Internet Site
Distributed Computing 379
The Client/Server Model 380
DNS: Domain Name Service 381
Ports 383
NIS: Network Information Service 383
NFS: Network Filesystem 383
Internet Services 384
Proxy Servers 387
RPC Network Services 387
Usenet 388
WWW: World Wide Web 390
URL: Uniform Resource Locator 391
Browsers 392
Search Engines 392
Chapter Summary 392
Exercises 393
Advanced Exercises 394

378

Chapter 11: Programming the Bourne Again Shell
Control Structures 396
if...then 396
if...then...else 400
if...then...elif 403
for...in 409
for 410
while 412
until 416
break and continue 418
case 419
select 425
Here Document 427
File Descriptors 429
Parameters and Variables 432
Array Variables 432
Locality of Variables 434
Special Parameters 436
Positional Parameters 438
Expanding Null and Unset Variables

443

395

xx

Contents

Builtin Commands 444
type: Displays Information About a Command 445
read: Accepts User Input 445
exec: Executes a Command 448
trap: Catches a Signal 451
kill: Aborts a Process 454
getopts: Parses Options 454
A Partial List of Builtins 457
Expressions 458
Arithmetic Evaluation 458
Logical Evaluation (Conditional Expressions) 459
String Pattern Matching 460
Operators 461
Shell Programs 466
A Recursive Shell Script 467
The quiz Shell Script 470
Chapter Summary 476
Exercises 478
Advanced Exercises 480

PART IV

System Administration

483

Chapter 12: System Administration:
Core Concepts 485
Running Commands with root Privileges 487
sudo: Running a Command with root Privileges 490
sudoers: Configuring sudo 494
Unlocking the root Account (Assigning a Password to root)
su: Gives You Another User’s Privileges 499
The Upstart Event-Based init Daemon 500
Software Packages 501
Definitions 501
Jobs 503
SysVinit (rc) Scripts: Start and Stop System Services 507
System Operation 510
Runlevels 510
Booting the System 511
Recovery (Single-User) Mode 512
Going to Multiuser Mode 515
Logging In 516

499

Contents xxi

Logging Out 517
Bringing the System Down 518
Crash 519
Avoiding a Trojan Horse 520
Getting Help 522
Textual System Administration Utilities 522
kill: Sends a Signal to a Process 522
Other Textual Utilities 525
Setting Up a Server 527
Standard Rules in Configuration Files 528
rpcinfo: Displays Information About portmap 530
The inetd and xinetd Superservers 531
Securing a Server 532
DHCP: Configures Network Interfaces 538
nsswitch.conf: Which Service to Look at First 542
How nsswitch.conf Works 542
PAM 545
More Information 546
Configuration Files, Module Types, and Control Flags 546
Example 548
Modifying the PAM Configuration 549
Chapter Summary 550
Exercises 551
Advanced Exercises 551

Chapter 13: Files, Directories, and Filesystems
Important Files and Directories 554
File Types 566
Ordinary Files, Directories, Links, and Inodes 566
Special Files 567
Filesystems 570
mount: Mounts a Filesystem 572
umount: Unmounts a Filesystem 575
fstab: Keeps Track of Filesystems 576
fsck: Checks Filesystem Integrity 577
tune2fs: Changes Filesystem Parameters 578
RAID Filesystem 580
Chapter Summary 580
Exercises 580
Advanced Exercises 581

553

xxii

Contents

Chapter 14: Downloading and Installing Software 583
JumpStart: Installing and Removing Packages Using aptitude 585
Finding the Package That Holds a File You Need 587
APT: Keeps the System Up-to-Date 588
Repositories 588
sources.list: Specifies Repositories for APT to Search 589
The APT Local Package Indexes and the APT Cache 590
The apt cron Script and APT Configuration Files 590
aptitude: Works with Packages and the Local Package Index 592
apt-cache: Displays Package Information 596
apt-get source: Downloads Source Files 598
dpkg: The Debian Package Management System 598
deb Files 599
dpkg: The Foundation of the Debian Package Management System
BitTorrent 604
Installing Non-dpkg Software 607
The /opt and /usr/local Directories 607
GNU Configure and Build System 607
wget: Downloads Files Noninteractively 609
Chapter Summary 610
Exercises 610
Advanced Exercises 610

Chapter 15: Printing with CUPS

600

611

Introduction 612
Prerequisites 612
More Information 613
Notes 613
JumpStart I: Configuring a Local Printer 614
system-config-printer: Configuring a Printer 614
Configuration Tabs 614
Setting Up a Remote Printer 616
JumpStart II: Configuring a Remote Printer Using the CUPS Web Interface
Traditional UNIX Printing 622
Configuring Printers 624
The CUPS Web Interface 624
CUPS on the Command Line 626
Sharing CUPS Printers 629
Printing from Windows 630
Printing Using CUPS 631
Printing Using Samba 631

618

Contents

Printing to Windows 632
Chapter Summary 633
Exercises 633
Advanced Exercises 633

Chapter 16: Building a Linux Kernel

635

Prerequisites 636
Downloading the Kernel Source Code 637
aptitude: Downloading and Installing the Kernel Source Code
git: Obtaining the Latest Kernel Source Code 637
Read the Documentation 638
Configuring and Compiling the Linux Kernel 639
.config: Configures the Kernel 639
Customizing a Kernel 640
Cleaning the Source Tree 642
Compiling a Kernel Image File and Loadable Modules 643
Using Loadable Kernel Modules 643
Installing the Kernel, Modules, and Associated Files 646
Rebooting 647
grub: The Linux Boot Loader 647
menu.lst: Configures grub 648
update-grub: Updates the menu.lst file 651
grub-install: Installs the MBR and grub Files 653
dmesg: Displays Kernel Messages 654
Chapter Summary 655
Exercises 656
Advanced Exercises 656

Chapter 17: Administration Tasks
Configuring User and Group Accounts 658
users-admin: Manages User Accounts 658
useradd: Adds a User Account 660
userdel: Removes a User Account 661
usermod: Modifies a User Account 661
groupadd: Adds a Group 661
groupdel: Removes a Group 661
Backing Up Files 662
Choosing a Backup Medium 663
Backup Utilities 663
Performing a Simple Backup 665
dump , restore: Back Up and Restore Filesystems

657

666

637

xxiii

xxiv

Contents

Scheduling Tasks 668
cron and anacron: Schedule Routine Tasks 668
at: Runs Occasional Tasks 671
System Reports 671
vmstat: Reports Virtual Memory Statistics 671
top: Lists Processes Using the Most Resources 672
parted: Reports on and Partitions a Hard Disk 673
Keeping Users Informed 677
Creating Problems 678
Solving Problems 679
Helping When a User Cannot Log In 679
Speeding Up the System 680
lsof: Finds Open Files 681
Keeping a Machine Log 681
Keeping the System Secure 682
Log Files and Mail for root 683
Monitoring Disk Usage 683
logrotate: Manages Log Files 684
Removing Unused Space from Directories 686
Disk Quota System 687
syslogd: Logs System Messages 688
Chapter Summary 690
Exercises 690
Advanced Exercises 691

Chapter 18: Configuring a LAN

693

Setting Up the Hardware 694
Connecting the Computers 694
Routers 695
NIC: Network Interface Card 695
Tools 695
Configuring the Systems 697
network-admin: Configures Network Connections 698
nm-applet: Configures Network Connections Automatically 700
iwconfig: Configures a Wireless NIC 700
Setting Up Servers 702
More Information 703
Chapter Summary 703
Exercises 704
Advanced Exercises 704

Contents

PART V

xxv

Using Clients and Setting Up Servers 705

Chapter 19: OpenSSH: Secure Network
Communication 707
Introduction 708
About OpenSSH 708
Files 708
How OpenSSH Works 710
More Information 711
OpenSSH Clients 711
Prerequisites 711
JumpStart: Using ssh and scp 711
Setup 712
ssh: Connects to or Executes Commands on a Remote System 714
scp: Copies Files to and from a Remote System 716
sftp: A Secure FTP Client 718
~/.ssh/config and /etc/ssh/ssh_config Configuration Files 718
sshd: OpenSSH Server 720
Prerequisites 720
Note 720
JumpStart: Starting the sshd Daemon 720
Authorized Keys: Automatic Login 721
Command Line Options 722
/etc/ssh/sshd_config Configuration File 722
Troubleshooting 724
Tunneling/Port Forwarding 725
Chapter Summary 727
Exercises 728
Advanced Exercises 728

Chapter 20: FTP: Transferring Files Across a Network 729
Introduction 730
More Information 731
FTP Client 731
Prerequisites 731
JumpStart I: Downloading Files Using ftp 732
Notes 735
Anonymous FTP 735
Automatic Login 735
Binary Versus ASCII Transfer Mode 736
ftp Specifics 736

xxvi

Contents

FTP Server (vsftpd) 740
Prerequisites 740
Notes 740
JumpStart II: Starting a vsftpd Server 741
Testing the Setup 741
vsftpd.conf: The vsftpd Configuration File 742
Chapter Summary 753
Exercises 753
Advanced Exercises 754

Chapter 21: exim4: Setting Up Mail Servers,
Clients, and More 755
Introduction to exim4 756
Prerequisites 757
Notes 757
More Information 758
JumpStart I: Configuring exim4 to Use a Smarthost 758
JumpStart II: Configuring exim4 to Send and Receive Email 760
How exim4 Works 761
Mail Logs 762
Working with Messages 763
Aliases and Forwarding 763
Related Programs 765
Configuring exim4 765
Using a Text Editor to Configure exim4 766
The update-exim4.conf.conf Configuration File 766
dpkg-reconfigure: Configures exim4 768
SpamAssassin 768
Prerequisites 769
How SpamAssassin Works 769
Testing SpamAssassin 770
Configuring SpamAssassin 771
Additional Email Tools 772
Webmail 772
Mailing Lists 774
Setting Up an IMAP or POP3 Server 776
Authenticated Relaying 777
Alternatives to exim4 779
Chapter Summary 779
Exercises 780
Advanced Exercises 780

Contents

Chapter 22: NIS: Network Information Service
Introduction to NIS 782
How NIS Works 782
More Information 784
Setting Up an NIS Client 784
Prerequisites 785
Notes 785
Step-by-Step Setup 786
Testing the Setup 787
yppasswd: Changes NIS Passwords 788
Setting Up an NIS Server 790
Prerequisites 790
Notes 791
Step-by-Step Setup 791
Testing 796
yppasswdd: The NIS Password Update Daemon
Chapter Summary 798
Exercises 798
Advanced Exercises 798

781

797

Chapter 23: NFS: Sharing Filesystems

799

Introduction 800
More Information 802
Setting Up an NFS Client 802
Prerequisites 802
JumpStart I: Mounting a Remote Directory Hierarchy 803
mount: Mounts a Directory Hierarchy 804
Improving Performance 806
/etc/fstab: Mounts Directory Hierarchies Automatically 807
Setting Up an NFS Server 808
Prerequisites 808
Notes 808
JumpStart II: Configuring an NFS Server Using shares-admin 809
Manually Exporting a Directory Hierarchy 811
Where the System Keeps NFS Mount Information 815
exportfs: Maintains the List of Exported Directory Hierarchies 817
Testing the Server Setup 818
automount: Mounts Directory Hierarchies on Demand 818
Chapter Summary 821
Exercises 822
Advanced Exercises 822

xxvii

xxviii

Contents

Chapter 24: Samba: Linux and Windows File
and Printer Sharing 823
Introduction 824
About Samba 825
Prerequisites 825
More Information 825
Notes 825
Samba Users, User Maps, and Passwords 826
JumpStart: Configuring a Samba Server Using shares-admin 826
swat: Configures a Samba Server 828
smb.conf: Manually Configuring a Samba Server 832
Parameters in the smbd.conf File 832
The [homes] Share: Sharing Users’ Home Directories 838
Accessing Linux Shares from Windows 838
Browsing Shares 838
Mapping a Share 839
Accessing Windows Shares from Linux 839
smbtree: Displays Windows Shares 839
smbclient: Connects to Windows Shares 840
Browsing Windows Networks 840
Mounting Windows Shares 841
Troubleshooting 841
Chapter Summary 844
Exercises 844
Advanced Exercises 844

Chapter 25: DNS/BIND: Tracking Domain Names
and Addresses 845
Introduction to DNS 846
Nodes, Domains, and Subdomains
Zones 848
Queries 849
Servers 850
Resource Records 851
DNS Query and Response 854
Reverse Name Resolution 855
About DNS 857
How DNS Works 857
Prerequisites 857
More Information 858
Notes 858

846

Contents

JumpStart I: Setting Up a DNS Cache 858
Setting Up BIND 860
named.conf: The named Configuration File
Zone Files 863
A DNS Cache 864
DNS Glue Records 868
TSIGs: Transaction Signatures 868
Running BIND in a chroot Jail 870
Troubleshooting 872
A Full-Functioned Nameserver 873
A Slave Server 877
A Split Horizon Server 878
Chapter Summary 883
Exercises 883
Advanced Exercises 884

860

Chapter 26: firestarter and iptables: Setting
Up a Firewall 885
About firestarter 886
Prerequisites 886
Notes 887
More Information 888
JumpStart: Building a Firewall Using the firestarter Firewall Wizard 888
firestarter: Maintains a Firewall 890
The Status Tab 890
The Events Tab 892
The Policy Tab 894
How iptables Works 896
About iptables 899
More Information 899
Prerequisites 899
Notes 899
Anatomy of an iptables Command 900
Building a Set of Rules 901
Commands 901
Packet Match Criteria 903
Display Criteria 903
Match Extensions 903
Targets 906
Copying Rules to and from the Kernel 907

xxix

xxx

Contents

Sharing an Internet Connection Using NAT 908
Connecting Several Clients to a Single Internet Connection 910
Connecting Several Servers to a Single Internet Connection 912
Chapter Summary 912
Exercises 913
Advanced Exercises 913

Chapter 27: Apache: Setting Up a Web Server

915

Introduction 916
About Apache 917
Prerequisites 917
More Information 918
Notes 918
JumpStart: Getting Apache Up and Running 919
Modifying the Configuration Files 919
Testing Apache 920
Putting Your Content in Place 920
Configuring Apache 921
Configuration Tools 921
Include Directives 922
Filesystem Layout 923
Configuration Directives 925
Directives I: Directives You May Want to Modify as You Get Started 926
Contexts and Containers 931
Directives II: Advanced Directives 935
The Ubuntu apache2.conf File 948
The Ubuntu default Configuration File 950
Redirects 951
Content Negotiation 951
Type Maps 951
MultiViews 952
Server-Generated Directory Listings (Indexing) 953
Virtual Hosts 953
Setting Up a Virtual Host 954
Types of Virtual Hosts 954
The default Virtual Host 954
Examples 954
Troubleshooting 956
Modules 957
mod_cgi and CGI Scripts 958
mod_ssl 959
Authentication Modules and .htaccess 961
Scripting Modules 962
Multiprocessing Modules (MPMs) 963

Contents
webalizer: Analyzes Web Traffic

MRTG: Monitors Traffic Loads
Error Codes 964
Chapter Summary 965
Exercises 966
Advanced Exercises 966

PART VI

964
964

Appendixes

969

Appendix A: Regular Expressions
Characters 972
Delimiters 972
Simple Strings 972
Special Characters 972
Periods 973
Brackets 973
Asterisks 974
Carets and Dollar Signs 974
Quoting Special Characters 975
Rules 975
Longest Match Possible 975
Empty Regular Expressions 976
Bracketing Expressions 976
The Replacement String 976
Ampersand 977
Quoted Digit 977
Extended Regular Expressions 977
Appendix Summary 979

Appendix B: Help

981

Solving a Problem 982
Finding Linux-Related Information 983
Documentation 983
Useful Linux Sites 984
Linux Newsgroups 985
Mailing Lists 985
Words 986
Software 986
Office Suites and Word Processors 988
Specifying a Terminal 988

971

xxxi

xxxii

Contents

Appendix C: Security

991

Encryption 992
Public Key Encryption 993
Symmetric Key Encryption 994
Encryption Implementation 995
GnuPG/PGP 995
File Security 997
Email Security 997
MTAs (Mail Transfer Agents) 997
MUAs (Mail User Agents) 998
Network Security 998
Network Security Solutions 999
Network Security Guidelines 999
Host Security 1001
Login Security 1002
Remote Access Security 1003
Viruses and Worms 1004
Physical Security 1004
Security Resources 1006
Appendix Summary 1009

Appendix D: The Free Software Definition
Appendix E: The Linux 2.6 Kernel

1011

1015

Native Posix Thread Library (NPTL) 1016
IPSecurity (IPSec) 1016
Asynchronous I/O (AIO) 1016
O(1) Scheduler 1017
OProfile 1017
kksymoops 1017
Reverse Map Virtual Memory (rmap VM) 1017
HugeTLBFS: Translation Look-Aside Buffer Filesystem 1018
remap_file_pages 1018
2.6 Network Stack Features (IGMPv3, IPv6, and Others) 1018
Internet Protocol Virtual Server (IPVS) 1019
Access Control Lists (ACLs) 1019
4GB-4GB Memory Split: Physical Address Extension (PAE) 1019
Scheduler Support for HyperThreaded CPUs 1019

Contents

Block I/O (BIO) Block Layer 1019
Support for Filesystems Larger Than 2 Terabytes 1020
New I/O Elevators 1020
Interactive Scheduler Response Tuning 1020

Glossary 1021
Index 1071

xxxiii

This page intentionally left blank

M

Preface

Preface
The book

Whether you are an end user, a system administrator, or a little of both, this book
explains with step-by-step examples how to get the most out of an Ubuntu Linux
system. In 27 chapters, this book takes you from installing an Ubuntu system
through understanding its inner workings to setting up secure servers that run on
the system.

The audience

This book is designed for a wide range of readers. It does not require you to have
programming experience, although having some experience using a general-purpose
computer, such as a Windows, Macintosh, UNIX, or another Linux system is certainly helpful. This book is appropriate for
• Students who are taking a class in which they use Linux
• Home users who want to set up and/or run Linux
• Professionals who use Linux at work
• System administrators who need an understanding of Linux and the tools
that are available to them
• Computer science students who are studying the Linux operating system
• Technical executives who want to get a grounding in Linux

Benefits

A Practical Guide to Ubuntu Linux® gives you a broad understanding of many facets of Linux, from installing Ubuntu Linux through using and customizing it. No
matter what your background, this book provides the knowledge you need to get
on with your work. You will come away from this book understanding how to use
Linux, and this book will remain a valuable reference for years to come.

xxxv

xxxvi Preface
Overlap

If you read A Practical Guide to Linux® Commands, Editors, and Shell Programming, you will notice some overlap between that book and the one you are reading
now. The first chapter, the chapters on the utilities and the filesystem, and the
appendix on regular expressions are very similar in the two books, as are the three
chapters on the Bourne Again Shell (bash). Chapters that appear in this book but do
not appear in A Practical Guide to Linux® Commands, Editors, and Shell Programming include Chapters 2 and 3 (installation), Chapters 4 and 8 (Ubuntu Linux and
the GUI), Chapter 10 (networking), all of the chapters in Part IV (system administration) and Part V (servers), and Appendix C (security).

Differences

While this book explains how to use Linux from a graphical interface and from the
command line (a textual interface), A Practical Guide to Linux® Commands, Editors, and Shell Programming works exclusively with the command line. It includes
full chapters on the vi and emacs editors, as well as chapters on the gawk pattern
processing language and the sed stream editor. In addition, it has a command reference section that provides extensive examples of the use of more than 80 of the
most important Linux utilities. You can use these utilities to solve problems without
resorting to programming in C.

This Book Includes Ubuntu Gutsy Gibbon (7.10)
on a Live/Install DVD
This book includes a live/install DVD that holds the Gutsy Gibbon (7.10) release of
Ubuntu Linux. You can use this DVD to run a live Ubuntu session that displays the
GNOME desktop without making any changes to your computer: Boot from the
DVD, run an Ubuntu live session, and log off. Your system remains untouched:
When you reboot, it is exactly as it was before you ran the Ubuntu live session.
Alternatively, you can install Ubuntu from the live session. Chapter 2 helps you get
ready to install Ubuntu. Chapter 3 provides step-by-step instructions for installing
Ubuntu from this DVD. This book guides you through learning about, using, and
administrating an Ubuntu Linux session.
DVD features

The included DVD incorporates all the features of the live/install Desktop CD as
well as the Alternate and Server CDs. It also includes all software packages supported by Ubuntu. You can use it to perform a graphical or textual (command line)
installation of either a graphical or a textual Ubuntu system. If you do not have an
Internet connection, you can use the DVD as a software repository and install any
supported software packages from it.

Features of This Book
This book is designed and organized so you can get the most out of it in the shortest
amount of time. You do not have to read this book straight through in page order.
Instead, once you are comfortable using Linux, you can use this book as a reference:

Features of This Book xxxvii

Look up a topic of interest in the table of contents or index and read about it. Or
think of the book as a catalog of Linux topics: Flip through the pages until a topic
catches your eye. The book includes many pointers to Web sites where you can get
additional information: Consider the Internet an extension of this book.
A Practical Guide to Ubuntu Linux® is structured with the following features:
• Optional sections enable you to read the book at different levels, returning
to more difficult material when you are ready to delve into it.
• Caution boxes highlight procedures that can easily go wrong, giving you
guidance before you run into trouble.
• Tip boxes highlight ways you can save time by doing something differently
or situations when it may be useful or just interesting to have additional
information.
• Security boxes point out places where you can make a system more secure.
The security appendix presents a quick background in system security
issues.
• Concepts are illustrated by practical examples throughout the book.
• Chapter summaries review the important points covered in each chapter.
• Review exercises are included at the end of each chapter for readers who
want to further hone their skills. Answers to even-numbered exercises are
available at www.sobell.com.
• The glossary defines more than 500 common terms.
• The chapters that cover servers include JumpStart sections that get you off
to a quick start using clients and setting up servers. Once a server is up and
running, you can test and modify its configuration as explained in the rest
of the chapter.
• This book provides resources for finding software on the Internet. It also
explains how to download and install software using Synaptic, aptitude,
the GNOME Add/Remove Applications window, and BitTorrent. It details
controlling automatic updates using the Update Notifier and the Update
Manager window.
• This book describes in detail many important GNU tools, including the
GNOME desktop, the Nautilus File Browser, the parted and gparted partition editors, the gzip compression utility, and many command line utilities
that come from the GNU project.
• Pointers throughout the text provide help in obtaining online documentation from many sources, including the local system, the Ubuntu Web site,
and other locations on the Internet.
• Many useful URLs point to Web sites where you can obtain software,
security programs and information, and more.
• The comprehensive index helps you locate topics quickly and easily.

xxxviii Preface

Key Topics Covered in This Book
This book contains a lot of information. This section distills and summarizes its
contents. In addition, “Details” (starting on page xli) describes what each chapter
covers. Finally, the table of contents provides more detail. This book:
Installation

• Describes how to download Ubuntu Linux ISO images from the Internet
and burn the Ubuntu live/install Desktop CD, the DVD, or the Ubuntu
Alternate or Server installation CD.
• Helps you plan the layout of the system’s hard disk. It includes a discussion of partitions, partition tables, and mount points, and assists you in
using the ubiquity or gparted graphical partitioner or the Ubuntu textual
partitioner to partition the hard disk.
• Explains how to set up a dual-boot system so you can install Ubuntu
Linux on a Windows system and boot either operating system.
• Describes in detail how to install Ubuntu Linux from a live/install Desktop
CD or the live/install DVD using the ubiquity graphical installer. It also
explains how to use the textual installer found on the Alternate CD, the
Server CD, and the DVD. The graphical installer is fast and easy to use.
The textual installer gives you more options and works on systems with
less RAM (system memory).
• Covers testing an Ubuntu CD/DVD for defects, setting boot command line
parameters (boot options), and creating a RAID array.
• Covers the details of installing and customizing the X.org version of the
X Window System either graphically using the Screen and Graphics
Preferences window or manually with a text editor.

Working with
Ubuntu Linux

• Introduces the GNOME desktop (GUI) and explains how to use desktop
tools, including the Top and Bottom panels, panel objects, the Main menu,
object context menus, the Workspace Switcher, the Nautilus File Browser,
and the GNOME Terminal emulator.
• Explains how to use the Appearance Preferences window to add and modify themes to customize your desktop to please your senses and help you
work more efficiently.
• Details how to set up 3D desktop visual effects that take advantage of
Compiz Fusion.
• Covers the Bourne Again Shell (bash) in three chapters, including an entire
chapter on shell programming that includes many sample shell scripts.
These chapters provide clear explanations and extensive examples of how
bash works both from the command line in day-to-day work and as a programming language to write shell scripts.

Key Topics Covered in This Book xxxix

• Explains the textual (command line) interface and introduces more than
30 command line utilities.
• Presents a tutorial on the vim textual editor.
• Covers types of networks, network protocols, and network utilities.
• Explains hostnames, IP addresses, and subnets, and explores how to use
host and dig to look up domain names and IP addresses on the Internet.
• Covers distributed computing and the client/server model.
• Explains how to use ACLs (Access Control Lists) to fine-tune user access
permissions.
System
administration

• Explains how to use the Ubuntu graphical and textual (command line)
tools to configure the display, DNS, NFS, Samba, Apache, a firewall, a
network interface, and more. You can also use these tools to add users and
manage local and remote printers.
• Goes into detail about using sudo to allow specific users to work with root
privileges (become Superuser) and customizing the way sudo works by
editing the sudoers configuration file. It also explains how you can unlock
the root account if necessary.
• Describes how to use the following tools to download and install software
to keep a system up-to-date and to install new software:










The Software Sources window controls which Ubuntu and third-party
software repositories Ubuntu downloads software packages from and
whether Ubuntu downloads updates automatically. You can also use
this window to cause Ubuntu to download and install security updates
automatically.
If you do not have an Internet connection, you can use the Software
Sources window to set up the DVD included with this book as a software repository. You can then install any software packages that
Ubuntu supports from this repository.
Based on how you set up updates in the Software Sources window, the
Update Notifier pops up on the desktop to let you know when software updates are available. Click the Update Notifier to open the
Update Manager window, from which you can download and install
updates.
The Add/Remove Applications window provides an easy way to
select, download, and install a wide range of software packages.
Synaptic allows you to search for, install, and remove software packages. It gives you more ways to search for packages than does the
Add/Remove Applications window.

xl Preface




APT downloads and installs software packages from the Internet (or
the included DVD), keeping a system up-to-date and resolving
dependencies as it processes the packages. You can use APT from a
graphical interface (Synaptic) or from several textual interfaces (e.g.,
aptitude and apt-get).
BitTorrent is a good choice for distributing large amounts of data such
as the Ubuntu installation DVD and CDs. The more people who use
BitTorrent to download a file, the faster it works.

• Covers graphical system administration tools, including the many tools
available from the GNOME Main menu.
• Explains system operation, including the boot process, init scripts, recovery (single-user) and multiuser modes, and steps to take if the system
crashes.
• Describes how to use and program the new Upstart init daemon, which
replaces the System V init daemon.
• Describes files, directories, and filesystems, including types of files and filesystems, fstab (the filesystem table), and automatically mounted filesystems,
and explains how to fine-tune and check the integrity of filesystems.
• Covers backup utilities, including tar, cpio, dump, and restore.
• Describes compression/archive utilities, including gzip, bzip2, compress,
and zip.
• Explains how to customize and build a Linux kernel.
Security

• Helps you manage basic system security issues using ssh (secure shell),
vsftpd (secure FTP server), Apache (Web server), iptables (firewalls), and
more.
• Covers using firestarter to share an Internet connection over a LAN, run a
DHCP server, and set up a basic firewall to protect the system.
• Provides instructions on using iptables to share an Internet connection over
a LAN and to build advanced firewalls.
• Describes how to set up a chroot jail to help protect a server system.
• Explains how to use TCP wrappers to control who can access a server.

Clients and servers

• Explains how to set up and use the most popular Linux servers, providing a
chapter on each: Apache, Samba, OpenSSH, exim4, DNS, NFS, FTP, firestarter
and iptables, and NIS (all of which are supported by Ubuntu Linux).
• Describes how to set up a CUPS printer server.
• Describes how to set up and use a DHCP server either by itself or from firestarter.

Programming

• Provides a full chapter covering shell programming using bash, including
many examples.

Key Topics Covered in This Book

xli

Details
Chapter 1

Chapter 1 presents a brief history of Linux and explains some of the features that
make it a cutting-edge operating system. The “Conventions Used in This Book”
(page 17) section details the typefaces and terminology this book uses.

Part I

Part I, “Installing Ubuntu Linux,” discusses how to install Ubuntu Linux. Chapter 2
presents an overview of the process of installing Ubuntu Linux, including hardware
requirements, downloading and burning a CD or DVD, and planning the layout of
the hard disk. Chapter 3 is a step-by-step guide to installing Ubuntu Linux from a
CD or DVD, using the graphical or textual installer. It also shows how to set up the
X Window System and customize your desktop (GUI).

Part II

Part II, “Getting Started with Ubuntu Linux,” familiarizes you with Ubuntu Linux,
covering logging in, the GUI, utilities, the filesystem, and the shell. Chapter 4 introduces desktop features, including the Top and Bottom panels and the Main menu;
explains how to use the Nautilus File Browser to manage files, run programs, and
connect to FTP and HTTP servers; covers finding documentation, dealing with login
problems, and using the window manager; and presents some suggestions on where
to find documentation, including manuals, tutorials, software notes, and HOWTOs.
Chapter 5 introduces the shell command line interface, describes more than 30 useful utilities, and presents a tutorial on the vim text editor. Chapter 6 discusses the
Linux hierarchical filesystem, covering files, filenames, pathnames, working with
directories, access permissions, and hard and symbolic links. Chapter 7 introduces
the Bourne Again Shell (bash) and discusses command line arguments and options,
redirecting input to and output from commands, running programs in the background, and using the shell to generate and expand filenames.

Experienced users may want to skim Part II
tip If you have used a UNIX or Linux system before, you may want to skim or skip some or all of the
chapters in Part II. Part I has two sections that all readers should take a look at: “Conventions Used
in This Book” (page 17), which explains the typographic and layout conventions used in this book,
and “Where to Find Documentation” (page 124), which points out both local and remote sources
of Linux and Ubuntu documentation.
Part III

Part III, “Digging into Ubuntu Linux,” goes into more detail about working with the
system. Chapter 8 discusses the GUI (desktop) and includes a section on how to run
a graphical program on a remote system and have the display appear locally. The
section on GNOME describes several GNOME utilities, including the new Deskbar
applet, and goes into more depth about the Nautilus File Browser. Chapter 9 extends
the bash coverage from Chapter 7, explaining how to redirect error output, avoid
overwriting files, and work with job control, processes, startup files, important shell
builtin commands, parameters, shell variables, and aliases. Chapter 10 explains networks, network security, and the Internet and discusses types of networks, subn