Tải bản đầy đủ (.pdf) (660 trang)

LINUX: Rute User''''s Tutorial and Exposition docx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.4 MB, 660 trang )

LINUX: Rute User’s Tutorial and Exposition
Paul Sheer
August 14, 2001
Pages up to and including this page are not included by Prentice Hall.
2
“The reason we don’t sell billions and billions of Guides,” continued Harl,
after wiping his mouth, “is the expense. What we do is we sell one Guide billions
and billions of times. We exploit the multidimensional nature of the Universe to
cut down on manufacturing costs. And we don’t sell to penniless hitchhikers.
What a stupid notion that was! Find the one section of the market that, more or
less by definition, doesn’t have any money, and try to sell to it. No. We sell to
the affluent business traveler and his vacationing wife in a billion, billion different
futures. This is the most radical, dynamic and thrusting business venture in the
entire multidimensional infinity of space-time-probability ever.”
. . .
Ford was completely at a loss for what to do next.
“Look,” he said in a stern voice. But he wasn’t certain how far saying things
like “Look” in a stern voice was necessarily going to get him, and time was not on
his side. What the hell, he thought, you’re only young once, and threw himself out
of the window. That would at least keep the element of surprise on his side.
. . .
In a spirit of scientific inquiry he hurled himself out of the window again.
Douglas Adams
Mostly Harmless
Strangely, the thing that least intrigued me was how they’d managed to get it
all done. I suppose I sort of knew. If I’d learned one thing from traveling, it was
that the way to get things done was to go ahead and do them. Don’t talk about
going to Borneo. Book a ticket, get a visa, pack a bag, and it just happens.
Alex Garland
The Beach
vi


Chapter Summary
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 Computing Sub-basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3 PC Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4 Basic Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5 Regular Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6 Editing Text Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
7 Shell Scripting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
8 Streams and sed — The Stream Editor . . . . . . . . . . . . . . . . . . . 73
9 Processes, Environment Variables . . . . . . . . . . . . . . . . . . . . . . 81
10 Mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
11 User Accounts and Ownerships . . . . . . . . . . . . . . . . . . . . . . . 101
12 Using Internet Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
13 LINUX Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
14 Permission and Modification Times . . . . . . . . . . . . . . . . . . . . . 123
15 Symbolic and Hard Links . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
16 Pre-installed Documentation . . . . . . . . . . . . . . . . . . . . . . . . . 131
17 Overview of the UNIX Directory Layout . . . . . . . . . . . . . . . . . . 135
18 UNIX Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
19 Partitions, File Systems, Formatting, Mounting . . . . . . . . . . . . . . 153
20 Advanced Shell Scripting . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
21 System Services and lpd . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
22 Trivial Introduction to C . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
23 Shared Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
24 Source and Binary Packages . . . . . . . . . . . . . . . . . . . . . . . . . 237
25 Introduction to IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
26 TCP and UDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
vii
Chapter Summary
27 DNS and Name Resolution . . . . . . . . . . . . . . . . . . . . . . . . . . 273

28 Network File System, NFS . . . . . . . . . . . . . . . . . . . . . . . . . . 285
29 Services Running Under inetd . . . . . . . . . . . . . . . . . . . . . . . 291
30 exim and sendmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
31 lilo, initrd, and Booting . . . . . . . . . . . . . . . . . . . . . . . . . 317
32 init, ?getty, and UNIX Run Levels . . . . . . . . . . . . . . . . . . . . 325
33 Sending Faxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
34 uucp and uux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
35 The LINUX File System Standard . . . . . . . . . . . . . . . . . . . . . . 347
36 httpd — Apache Web Server . . . . . . . . . . . . . . . . . . . . . . . . 389
37 crond and atd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
38 postgres SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
39 smbd — Samba NT Server . . . . . . . . . . . . . . . . . . . . . . . . . . 425
40 named — Domain Name Server . . . . . . . . . . . . . . . . . . . . . . . 437
41 Point-to-Point Protocol — Dialup Networking . . . . . . . . . . . . . . 453
42 The LINUX Kernel Source, Modules, and Hardware Support . . . . . . 463
43 The X Window System . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
44 UNIX Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511
A Lecture Schedule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525
B LPI Certification Cross-Reference . . . . . . . . . . . . . . . . . . . . . . 531
C RHCE Certification Cross-Reference . . . . . . . . . . . . . . . . . . . . 543
D LINUX Advocacy FAQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
E The GNU General Public License Version 2 . . . . . . . . . . . . . . . . 573
Index 581
viii
Contents
Acknowledgments xxxi
1 Introduction 1
1.1 What This Book Covers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Read This Next. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 What Do I Need to Get Started? . . . . . . . . . . . . . . . . . . . . . . . 1

1.4 More About This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.5 I Get Frustrated with UNIX Documentation That I Don’t Understand . . 2
1.6 LPI and RHCE Requirements . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.7 Not RedHat: RedHat-like . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.8 Updates and Errata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 Computing Sub-basics 5
2.1 Binary, Octal, Decimal, and Hexadecimal . . . . . . . . . . . . . . . . . . 5
2.2 Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3 Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.4 Login and Password Change . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.5 Listing Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.6 Command-Line Editing Keys . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.7 Console Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.8 Creating Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.9 Allowable Characters for File Names . . . . . . . . . . . . . . . . . . . . 12
2.10 Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3 PC Hardware 15
3.1 Motherboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2 Master/Slave IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
ix
Contents
3.3 CMOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.4 Serial Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.5 Modems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4 Basic Commands 25
4.1 The ls Command, Hidden Files, Command-Line Options . . . . . . . . 25
4.2 Error Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.3 Wildcards, Names, Extensions, and glob Expressions . . . . . . . . . . . 29
4.3.1 File naming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.3.2 Glob expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

4.4 Usage Summaries and the Copy Command . . . . . . . . . . . . . . . . . 33
4.5 Directory Manipulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.6 Relative vs. Absolute Pathnames . . . . . . . . . . . . . . . . . . . . . . . . 34
4.7 System Manual Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.8 System info Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.9 Some Basic Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.10 The mc File Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.11 Multimedia Commands for Fun . . . . . . . . . . . . . . . . . . . . . . . 40
4.12 Terminating Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.13 Compressed Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.14 Searching for Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.15 Searching Within Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.16 Copying to MS-DOS and Windows Formatted Floppy Disks . . . . . . . 44
4.17 Archives and Backups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.18 The PATH Where Commands Are Searched For . . . . . . . . . . . . . . 46
4.19 The Option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5 Regular Expressions 49
5.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.2 The fgrep Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.3 Regular Expression \{ \} Notation . . . . . . . . . . . . . . . . . . . . . 51
5.4 + ? \< \> ( ) | Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.5 Regular Expression Subexpressions . . . . . . . . . . . . . . . . . . . . . 52
x
Contents
6 Editing Text Files 53
6.1 vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
6.2 Syntax Highlighting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
6.3 Editors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
6.3.1 Cooledit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
6.3.2 vi and vim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

6.3.3 Emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
6.3.4 Other editors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
7 Shell Scripting 61
7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
7.2 Looping: the while and until Statements . . . . . . . . . . . . . . . . . 62
7.3 Looping: the for Statement . . . . . . . . . . . . . . . . . . . . . . . . . . 63
7.4 breaking Out of Loops and continueing . . . . . . . . . . . . . . . . . 65
7.5 Looping Over Glob Expressions . . . . . . . . . . . . . . . . . . . . . . . 66
7.6 The case Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
7.7 Using Functions: the function Keyword . . . . . . . . . . . . . . . . . 67
7.8 Properly Processing Command-Line Args: shift . . . . . . . . . . . . . 68
7.9 More on Command-Line Arguments: $@ and $0 . . . . . . . . . . . . . . 70
7.10 Single Forward Quote Notation . . . . . . . . . . . . . . . . . . . . . . . . 70
7.11 Double-Quote Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
7.12 Backward-Quote Substitution . . . . . . . . . . . . . . . . . . . . . . . . . 71
8 Streams and sed — The Stream Editor 73
8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
8.2 Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
8.3 Piping Using | Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
8.4 A Complex Piping Example . . . . . . . . . . . . . . . . . . . . . . . . . . 75
8.5 Redirecting Streams with >& . . . . . . . . . . . . . . . . . . . . . . . . . 75
8.6 Using sed to Edit Streams . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
8.7 Regular Expression Subexpressions . . . . . . . . . . . . . . . . . . . . . 77
8.8 Inserting and Deleting Lines . . . . . . . . . . . . . . . . . . . . . . . . . 79
9 Processes, Environment Variables 81
9.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
9.2 ps — List Running Processes . . . . . . . . . . . . . . . . . . . . . . . . . 82
9.3 Controlling Jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
xi
Contents

9.4 Creating Background Processes . . . . . . . . . . . . . . . . . . . . . . . . 83
9.5 killing a Process, Sending Signals . . . . . . . . . . . . . . . . . . . . . 84
9.6 List of Common Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
9.7 Niceness of Processes, Scheduling Priority . . . . . . . . . . . . . . . . . 87
9.8 Process CPU/Memory Consumption, top . . . . . . . . . . . . . . . . . 88
9.9 Environments of Processes . . . . . . . . . . . . . . . . . . . . . . . . . . 90
10 Mail 97
10.1 Sending and Reading Mail . . . . . . . . . . . . . . . . . . . . . . . . . . 99
10.2 The SMTP Protocol — Sending Mail Raw to Port 25 . . . . . . . . . . . . 99
11 User Accounts and Ownerships 101
11.1 File Ownerships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
11.2 The Password File /etc/passwd . . . . . . . . . . . . . . . . . . . . . . 102
11.3 Shadow Password File: /etc/shadow . . . . . . . . . . . . . . . . . . . 103
11.4 The groups Command and /etc/group . . . . . . . . . . . . . . . . . 104
11.5 Manually Creating a User Account . . . . . . . . . . . . . . . . . . . . . . 105
11.6 Automatically: useradd and groupadd . . . . . . . . . . . . . . . . . . 106
11.7 User Logins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
11.7.1 The login command . . . . . . . . . . . . . . . . . . . . . . . . . 106
11.7.2 The set user, su command . . . . . . . . . . . . . . . . . . . . . . . 107
11.7.3 The who, w, and users commands to see who is logged in . . . . 108
11.7.4 The id command and effective UID . . . . . . . . . . . . . . . . . 109
11.7.5 User limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
12 Using Internet Services 111
12.1 ssh, not telnet or rlogin . . . . . . . . . . . . . . . . . . . . . . . . . 111
12.2 rcp and scp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
12.3 rsh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
12.4 FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
12.5 finger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
12.6 Sending Files by Email . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
12.6.1 uuencode and uudecode . . . . . . . . . . . . . . . . . . . . . . 114

12.6.2 MIME encapsulation . . . . . . . . . . . . . . . . . . . . . . . . . . 115
xii
Contents
13 LINUX Resources 117
13.1 FTP Sites and the sunsite Mirror . . . . . . . . . . . . . . . . . . . . . . 117
13.2 HTTP — Web Sites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
13.3 SourceForge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
13.4 Mailing Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
13.4.1 Majordomo and Listserv . . . . . . . . . . . . . . . . . . . . . . . 119
13.4.2 *-request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
13.5 Newsgroups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
13.6 RFCs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
14 Permission and Modification Times 123
14.1 The chmod Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
14.2 The umask Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
14.3 Modification Times: stat . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
15 Symbolic and Hard Links 127
15.1 Soft Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
15.2 Hard Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
16 Pre-installed Documentation 131
17 Overview of the UNIX Directory Layout 135
17.1 Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
17.2 UNIX Directory Superstructure . . . . . . . . . . . . . . . . . . . . . . . . 136
17.3 LINUX on a Single Floppy Disk . . . . . . . . . . . . . . . . . . . . . . . . 138
18 UNIX Devices 141
18.1 Device Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
18.2 Block and Character Devices . . . . . . . . . . . . . . . . . . . . . . . . . 142
18.3 Major and Minor Device Numbers . . . . . . . . . . . . . . . . . . . . . . 143
18.4 Common Device Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
18.5 dd, tar, and Tricks with Block Devices . . . . . . . . . . . . . . . . . . . 147

18.5.1 Creating boot disks from boot images . . . . . . . . . . . . . . . . 147
18.5.2 Erasing disks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
18.5.3 Identifying data on raw disks . . . . . . . . . . . . . . . . . . . . . 148
18.5.4 Duplicating a disk . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
18.5.5 Backing up to floppies . . . . . . . . . . . . . . . . . . . . . . . . . 149
xiii
Contents
18.5.6 Tape backups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
18.5.7 Hiding program output, creating blocks of zeros . . . . . . . . . 149
18.6 Creating Devices with mknod and /dev/MAKEDEV . . . . . . . . . . . . 150
19 Partitions, File Systems, Formatting, Mounting 153
19.1 The Physical Disk Structure . . . . . . . . . . . . . . . . . . . . . . . . . . 153
19.1.1 Cylinders, heads, and sectors . . . . . . . . . . . . . . . . . . . . . 153
19.1.2 Large Block Addressing . . . . . . . . . . . . . . . . . . . . . . . . 154
19.1.3 Extended partitions . . . . . . . . . . . . . . . . . . . . . . . . . . 154
19.2 Partitioning a New Disk . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
19.3 Formatting Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
19.3.1 File systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
19.3.2 mke2fs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
19.3.3 Formatting floppies and removable drives . . . . . . . . . . . . . 161
19.3.4 Creating MS-DOS floppies . . . . . . . . . . . . . . . . . . . . . . 162
19.3.5 mkswap, swapon, and swapoff . . . . . . . . . . . . . . . . . . . 162
19.4 Device Mounting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
19.4.1 Mounting CD-ROMs . . . . . . . . . . . . . . . . . . . . . . . . . 163
19.4.2 Mounting floppy disks . . . . . . . . . . . . . . . . . . . . . . . . 164
19.4.3 Mounting Windows and NT partitions . . . . . . . . . . . . . . . 164
19.5 File System Repair: fsck . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
19.6 File System Errors on Boot . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
19.7 Automatic Mounts: fstab . . . . . . . . . . . . . . . . . . . . . . . . . . 166
19.8 Manually Mounting /proc . . . . . . . . . . . . . . . . . . . . . . . . . . 167

19.9 RAM and Loopback Devices . . . . . . . . . . . . . . . . . . . . . . . . . 167
19.9.1 Formatting a floppy inside a file . . . . . . . . . . . . . . . . . . . 167
19.9.2 CD-ROM files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
19.10 Remounting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
19.11 Disk sync . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
20 Advanced Shell Scripting 171
20.1 Lists of Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
20.2 Special Parameters: $?, $*,. . . . . . . . . . . . . . . . . . . . . . . . . . . 172
20.3 Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
20.4 Built-in Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
20.5 Trapping Signals — the trap Command . . . . . . . . . . . . . . . . . . 176
xiv
Contents
20.6 Internal Settings — the set Command . . . . . . . . . . . . . . . . . . . 177
20.7 Useful Scripts and Commands . . . . . . . . . . . . . . . . . . . . . . . . 178
20.7.1 chroot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
20.7.2 if conditionals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
20.7.3 patching and diffing . . . . . . . . . . . . . . . . . . . . . . . . 179
20.7.4 Internet connectivity test . . . . . . . . . . . . . . . . . . . . . . . 180
20.7.5 Recursive grep (search) . . . . . . . . . . . . . . . . . . . . . . . . 180
20.7.6 Recursive search and replace . . . . . . . . . . . . . . . . . . . . . 181
20.7.7 cut and awk — manipulating text file fields . . . . . . . . . . . . 182
20.7.8 Calculations with bc . . . . . . . . . . . . . . . . . . . . . . . . . . 183
20.7.9 Conversion of graphics formats of many files . . . . . . . . . . . 183
20.7.10 Securely erasing files . . . . . . . . . . . . . . . . . . . . . . . . . . 184
20.7.11 Persistent background processes . . . . . . . . . . . . . . . . . . . 184
20.7.12 Processing the process list . . . . . . . . . . . . . . . . . . . . . . . 185
20.8 Shell Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
20.8.1 Customizing the PATH and LD LIBRARY PATH . . . . . . . . . . 187
20.9 File Locking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

20.9.1 Locking a mailbox file . . . . . . . . . . . . . . . . . . . . . . . . . 188
20.9.2 Locking over NFS . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
20.9.3 Directory versus file locking . . . . . . . . . . . . . . . . . . . . . 190
20.9.4 Locking inside C programs . . . . . . . . . . . . . . . . . . . . . . 191
21 System Services and lpd 193
21.1 Using lpr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
21.2 Downloading and Installing . . . . . . . . . . . . . . . . . . . . . . . . . . 194
21.3 LPRng vs. Legacy lpr-0.nn . . . . . . . . . . . . . . . . . . . . . . . . . 195
21.4 Package Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
21.4.1 Documentation files . . . . . . . . . . . . . . . . . . . . . . . . . . 195
21.4.2 Web pages, mailing lists, and download points . . . . . . . . . . 195
21.4.3 User programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
21.4.4 Daemon and administrator programs . . . . . . . . . . . . . . . . 196
21.4.5 Configuration files . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
21.4.6 Service initialization files . . . . . . . . . . . . . . . . . . . . . . . 196
21.4.7 Spool files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
21.4.8 Log files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
21.4.9 Log file rotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
xv
Contents
21.4.10 Environment variables . . . . . . . . . . . . . . . . . . . . . . . . 199
21.5 The printcap File in Detail . . . . . . . . . . . . . . . . . . . . . . . . . 199
21.6 PostScript and the Print Filter . . . . . . . . . . . . . . . . . . . . . . . . . 200
21.7 Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
21.8 Printing Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
21.9 Useful Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
21.9.1 printtool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
21.9.2 apsfilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
21.9.3 mpage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
21.9.4 psutils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204

21.10 Printing to Things Besides Printers . . . . . . . . . . . . . . . . . . . . . . 205
22 Trivial Introduction to C 207
22.1 C Fundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
22.1.1 The simplest C program . . . . . . . . . . . . . . . . . . . . . . . . 208
22.1.2 Variables and types . . . . . . . . . . . . . . . . . . . . . . . . . . 209
22.1.3 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
22.1.4 for, while, if, and switch statements . . . . . . . . . . . . . . 211
22.1.5 Strings, arrays, and memory allocation . . . . . . . . . . . . . . . 213
22.1.6 String operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
22.1.7 File operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
22.1.8 Reading command-line arguments inside C programs . . . . . . 218
22.1.9 A more complicated example . . . . . . . . . . . . . . . . . . . . . 218
22.1.10 #include statements and prototypes . . . . . . . . . . . . . . . . 220
22.1.11 C comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
22.1.12 #define and #if — C macros . . . . . . . . . . . . . . . . . . . 222
22.2 Debugging with gdb and strace . . . . . . . . . . . . . . . . . . . . . . 223
22.2.1 gdb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
22.2.2 Examining core files . . . . . . . . . . . . . . . . . . . . . . . . . 227
22.2.3 strace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
22.3 C Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
22.4 C Projects — Makefiles . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
22.4.1 Completing our example Makefile . . . . . . . . . . . . . . . . 231
22.4.2 Putting it all together . . . . . . . . . . . . . . . . . . . . . . . . . 231
xvi
Contents
23 Shared Libraries 233
23.1 Creating DLL .so Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
23.2 DLL Versioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
23.3 Installing DLL .so Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
24 Source and Binary Packages 237

24.1 Building GNU Source Packages . . . . . . . . . . . . . . . . . . . . . . . . 237
24.2 RedHat and Debian Binary Packages . . . . . . . . . . . . . . . . . . . . 240
24.2.1 Package versioning . . . . . . . . . . . . . . . . . . . . . . . . . . 240
24.2.2 Installing, upgrading, and deleting . . . . . . . . . . . . . . . . . 240
24.2.3 Dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
24.2.4 Package queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
24.2.5 File lists and file queries . . . . . . . . . . . . . . . . . . . . . . . . 242
24.2.6 Package verification . . . . . . . . . . . . . . . . . . . . . . . . . . 243
24.2.7 Special queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
24.2.8 dpkg/apt versus rpm . . . . . . . . . . . . . . . . . . . . . . . . . 245
24.3 Source Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
25 Introduction to IP 247
25.1 Internet Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
25.2 Special IP Addresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
25.3 Network Masks and Addresses . . . . . . . . . . . . . . . . . . . . . . . . 250
25.4 Computers on a LAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
25.5 Configuring Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
25.6 Configuring Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
25.7 Configuring Startup Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . 254
25.7.1 RedHat networking scripts . . . . . . . . . . . . . . . . . . . . . . 254
25.7.2 Debian networking scripts . . . . . . . . . . . . . . . . . . . . . . 255
25.8 Complex Routing — a Many-Hop Example . . . . . . . . . . . . . . . . . 256
25.9 Interface Aliasing — Many IPs on One Physical Card . . . . . . . . . . . 259
25.10 Diagnostic Utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
25.10.1 ping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
25.10.2 traceroute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
25.10.3 tcpdump . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
xvii
Contents
26 TCP and UDP 263

26.1 The TCP Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
26.2 A Sample TCP Session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
26.3 User Datagram Protocol (UDP) . . . . . . . . . . . . . . . . . . . . . . . . 268
26.4 /etc/services File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
26.5 Encrypting and Forwarding TCP . . . . . . . . . . . . . . . . . . . . . . . 270
27 DNS and Name Resolution 273
27.1 Top-Level Domains (TLDs) . . . . . . . . . . . . . . . . . . . . . . . . . . 273
27.2 Resolving DNS Names to IP Addresses . . . . . . . . . . . . . . . . . . . 274
27.2.1 The Internet DNS infrastructure . . . . . . . . . . . . . . . . . . . 275
27.2.2 The name resolution process . . . . . . . . . . . . . . . . . . . . . 276
27.3 Configuring Your Local Machine . . . . . . . . . . . . . . . . . . . . . . . 277
27.4 Reverse Lookups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
27.5 Authoritative for a Domain . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
27.6 The host, ping, and whois Command . . . . . . . . . . . . . . . . . . . 281
27.7 The nslookup Command . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
27.7.1 NS, MX, PTR, A and CNAME records . . . . . . . . . . . . . . . . . . 283
27.8 The dig Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
28 Network File System, NFS 285
28.1 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
28.2 Configuration Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
28.3 Access Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
28.4 Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
28.5 Kernel NFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
29 Services Running Under inetd 291
29.1 The inetd Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
29.2 Invoking Services with /etc/inetd.conf . . . . . . . . . . . . . . . . 291
29.2.1 Invoking a standalone service . . . . . . . . . . . . . . . . . . . . 292
29.2.2 Invoking an inetd service . . . . . . . . . . . . . . . . . . . . . . 292
29.2.3 Invoking an inetd “TCP wrapper” service . . . . . . . . . . . . 293
29.2.4 Distribution conventions . . . . . . . . . . . . . . . . . . . . . . . 294

29.3 Various Service Explanations . . . . . . . . . . . . . . . . . . . . . . . . . 294
29.4 The xinetd Alternative . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
29.5 Configuration Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
xviii
Contents
29.5.1 Limiting access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
29.6 Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
30 exim and sendmail 299
30.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
30.1.1 How mail works . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
30.1.2 Configuring a POP/IMAP server . . . . . . . . . . . . . . . . . . 301
30.1.3 Why exim? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
30.2 exim Package Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
30.3 exim Configuration File . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
30.3.1 Global settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
30.3.2 Transports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
30.3.3 Directors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
30.3.4 Routers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
30.4 Full-blown Mail server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
30.5 Shell Commands for exim Administration . . . . . . . . . . . . . . . . . 308
30.6 The Queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
30.7 /etc/aliases for Equivalent Addresses . . . . . . . . . . . . . . . . . 310
30.8 Real-Time Blocking List — Combating Spam . . . . . . . . . . . . . . . . 311
30.8.1 What is spam? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
30.8.2 Basic spam prevention . . . . . . . . . . . . . . . . . . . . . . . . . 312
30.8.3 Real-time blocking list . . . . . . . . . . . . . . . . . . . . . . . . . 313
30.8.4 Mail administrator and user responsibilities . . . . . . . . . . . . 313
30.9 Sendmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
31 lilo, initrd, and Booting 317
31.1 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

31.2 Theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
31.2.1 Kernel boot sequence . . . . . . . . . . . . . . . . . . . . . . . . . 318
31.2.2 Master boot record . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
31.2.3 Booting partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
31.2.4 Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
31.3 lilo.conf and the lilo Command . . . . . . . . . . . . . . . . . . . . 319
31.4 Creating Boot Floppy Disks . . . . . . . . . . . . . . . . . . . . . . . . . . 321
31.5 SCSI Installation Complications and initrd . . . . . . . . . . . . . . . . 322
31.6 Creating an initrd Image . . . . . . . . . . . . . . . . . . . . . . . . . . 322
31.7 Modifying lilo.conf for initrd . . . . . . . . . . . . . . . . . . . . . 324
31.8 Using mkinitrd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
xix
Contents
32 init, ?getty, and UNIX Run Levels 325
32.1 init — the First Process . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
32.2 /etc/inittab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
32.2.1 Minimal configuration . . . . . . . . . . . . . . . . . . . . . . . . . 326
32.2.2 Rereading inittab . . . . . . . . . . . . . . . . . . . . . . . . . . 328
32.2.3 The respawning too fast error . . . . . . . . . . . . . . . . . 328
32.3 Useful Run Levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
32.4 getty Invocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
32.5 Bootup Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
32.6 Incoming Faxes and Modem Logins . . . . . . . . . . . . . . . . . . . . . 330
32.6.1 mgetty with character terminals . . . . . . . . . . . . . . . . . . 330
32.6.2 mgetty log files . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
32.6.3 mgetty with modems . . . . . . . . . . . . . . . . . . . . . . . . . 330
32.6.4 mgetty receiving faxes . . . . . . . . . . . . . . . . . . . . . . . . 331
33 Sending Faxes 333
33.1 Fax Through Printing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
33.2 Setgid Wrapper Binary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335

34 uucp and uux 337
34.1 Command-Line Operation . . . . . . . . . . . . . . . . . . . . . . . . . . 338
34.2 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
34.3 Modem Dial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
34.4 tty/UUCP Lock Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
34.5 Debugging uucp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
34.6 Using uux with exim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
34.7 Scheduling Dialouts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
35 The LINUX File System Standard 347
35.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
35.1.1 Purpose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
35.1.2 Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
35.2 The Filesystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
35.3 The Root Filesystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
35.3.1 Purpose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
35.3.2 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
35.3.3 Specific Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
xx
Contents
35.3.4 /bin : Essential user command binaries (for use by all users) . . 353
35.3.5 /boot : Static files of the boot loader . . . . . . . . . . . . . . . . . 354
35.3.6 /dev : Device files . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
35.3.7 /etc : Host-specific system configuration . . . . . . . . . . . . . . 355
35.3.8 /home : User home directories (optional) . . . . . . . . . . . . . . 358
35.3.9 /lib : Essential shared libraries and kernel modules . . . . . . . . 358
35.3.10 /lib<qual> : Alternate format essential shared libraries (optional)359
35.3.11 /mnt : Mount point for a temporarily mounted filesystem . . . . 359
35.3.12 /opt : Add-on application software packages . . . . . . . . . . . 360
35.3.13 /root : Home directory for the root user (optional) . . . . . . . . 361
35.3.14 /sbin : System binaries . . . . . . . . . . . . . . . . . . . . . . . . 361

35.3.15 /tmp : Temporary files . . . . . . . . . . . . . . . . . . . . . . . . 362
35.4 The /usr Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
35.4.1 Purpose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
35.4.2 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
35.4.3 Specific Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
35.4.4 /usr/X11R6 : X Window System, Version 11 Release 6 (optional) 363
35.4.5 /usr/bin : Most user commands . . . . . . . . . . . . . . . . . . . 364
35.4.6 /usr/include : Directory for standard include files. . . . . . . . . 365
35.4.7 /usr/lib : Libraries for programming and packages . . . . . . . . 365
35.4.8 /usr/lib<qual> : Alternate format libraries (optional) . . . . . . 366
35.4.9 /usr/local : Local hierarchy . . . . . . . . . . . . . . . . . . . . . 366
35.4.10 /usr/sbin : Non-essential standard system binaries . . . . . . . . 367
35.4.11 /usr/share : Architecture-independent data . . . . . . . . . . . . 367
35.4.12 /usr/src : Source code (optional) . . . . . . . . . . . . . . . . . . 373
35.5 The /var Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
35.5.1 Purpose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
35.5.2 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
35.5.3 Specific Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
35.5.4 /var/account : Process accounting logs (optional) . . . . . . . . . 374
35.5.5 /var/cache : Application cache data . . . . . . . . . . . . . . . . 374
35.5.6 /var/crash : System crash dumps (optional) . . . . . . . . . . . . 376
35.5.7 /var/games : Variable game data (optional) . . . . . . . . . . . . 376
35.5.8 /var/lib : Variable state information . . . . . . . . . . . . . . . . 377
35.5.9 /var/lock : Lock files . . . . . . . . . . . . . . . . . . . . . . . . . 379
35.5.10 /var/log : Log files and directories . . . . . . . . . . . . . . . . . 379
xxi
Contents
35.5.11 /var/mail : User mailbox files (optional) . . . . . . . . . . . . . . 379
35.5.12 /var/opt : Variable data for /opt . . . . . . . . . . . . . . . . . . 380
35.5.13 /var/run : Run-time variable data . . . . . . . . . . . . . . . . . . 380

35.5.14 /var/spool : Application spool data . . . . . . . . . . . . . . . . . 381
35.5.15 /var/tmp : Temporary files preserved between system reboots . 382
35.5.16 /var/yp : Network Information Service (NIS) database files (op-
tional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
35.6 Operating System Specific Annex . . . . . . . . . . . . . . . . . . . . . . 382
35.6.1 Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
35.7 Appendix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
35.7.1 The FHS mailing list . . . . . . . . . . . . . . . . . . . . . . . . . . 386
35.7.2 Background of the FHS . . . . . . . . . . . . . . . . . . . . . . . . 386
35.7.3 General Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . 386
35.7.4 Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
35.7.5 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
35.7.6 Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
36 httpd — Apache Web Server 389
36.1 Web Server Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
36.2 Installing and Configuring Apache . . . . . . . . . . . . . . . . . . . . . . 393
36.2.1 Sample httpd.conf . . . . . . . . . . . . . . . . . . . . . . . . . 393
36.2.2 Common directives . . . . . . . . . . . . . . . . . . . . . . . . . . 394
36.2.3 User HTML directories . . . . . . . . . . . . . . . . . . . . . . . . 398
36.2.4 Aliasing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
36.2.5 Fancy indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
36.2.6 Encoding and language negotiation . . . . . . . . . . . . . . . . . 399
36.2.7 Server-side includes — SSI . . . . . . . . . . . . . . . . . . . . . . 400
36.2.8 CGI — Common Gateway Interface . . . . . . . . . . . . . . . . . 401
36.2.9 Forms and CGI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
36.2.10 Setuid CGIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
36.2.11 Apache modules and PHP . . . . . . . . . . . . . . . . . . . . . . 406
36.2.12 Virtual hosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
37 crond and atd 409
37.1 /etc/crontab Configuration File . . . . . . . . . . . . . . . . . . . . . 409

37.2 The at Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
37.3 Other cron Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
xxii
Contents
38 postgres SQL Server 413
38.1 Structured Query Language . . . . . . . . . . . . . . . . . . . . . . . . . . 413
38.2 postgres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
38.3 postgres Package Content . . . . . . . . . . . . . . . . . . . . . . . . . . 414
38.4 Installing and Initializing postgres . . . . . . . . . . . . . . . . . . . . 415
38.5 Database Queries with psql . . . . . . . . . . . . . . . . . . . . . . . . . 417
38.6 Introduction to SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
38.6.1 Creating tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
38.6.2 Listing a table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
38.6.3 Adding a column . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
38.6.4 Deleting (dropping) a column . . . . . . . . . . . . . . . . . . . . 420
38.6.5 Deleting (dropping) a table . . . . . . . . . . . . . . . . . . . . . . 420
38.6.6 Inserting rows, “object relational” . . . . . . . . . . . . . . . . . . 420
38.6.7 Locating rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
38.6.8 Listing selected columns, and the oid column . . . . . . . . . . . 421
38.6.9 Creating tables from other tables . . . . . . . . . . . . . . . . . . . 421
38.6.10 Deleting rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
38.6.11 Searches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
38.6.12 Migrating from another database; dumping and restoring tables
as plain text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
38.6.13 Dumping an entire database . . . . . . . . . . . . . . . . . . . . . 423
38.6.14 More advanced searches . . . . . . . . . . . . . . . . . . . . . . . 423
38.7 Real Database Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
39 smbd — Samba NT Server 425
39.1 Samba: An Introduction by Christopher R. Hertel . . . . . . . . . . . . . 425
39.2 Configuring Samba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431

39.3 Configuring Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
39.4 Configuring a Windows Printer . . . . . . . . . . . . . . . . . . . . . . . . 434
39.5 Configuring swat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
39.6 Windows NT Caveats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
40 named — Domain Name Server 437
40.1 Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
40.2 Configuring bind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
40.2.1 Example configuration . . . . . . . . . . . . . . . . . . . . . . . . 438
40.2.2 Starting the name server . . . . . . . . . . . . . . . . . . . . . . . 443
xxiii
Contents
40.2.3 Configuration in detail . . . . . . . . . . . . . . . . . . . . . . . . 444
40.3 Round-Robin Load-Sharing . . . . . . . . . . . . . . . . . . . . . . . . . . 448
40.4 Configuring named for Dialup Use . . . . . . . . . . . . . . . . . . . . . . 449
40.4.1 Example caching name server . . . . . . . . . . . . . . . . . . . . 449
40.4.2 Dynamic IP addresses . . . . . . . . . . . . . . . . . . . . . . . . . 450
40.5 Secondary or Slave DNS Servers . . . . . . . . . . . . . . . . . . . . . . . 450
41 Point-to-Point Protocol — Dialup Networking 453
41.1 Basic Dialup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
41.1.1 Determining your chat script . . . . . . . . . . . . . . . . . . . . 455
41.1.2 CHAP and PAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
41.1.3 Running pppd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
41.2 Demand-Dial, Masquerading . . . . . . . . . . . . . . . . . . . . . . . . . 458
41.3 Dialup DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
41.4 Dial-in Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
41.5 Using tcpdump . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
41.6 ISDN Instead of Modems . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
42 The LINUX Kernel Source, Modules, and Hardware Support 463
42.1 Kernel Constitution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
42.2 Kernel Version Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464

42.3 Modules, insmod Command, and Siblings . . . . . . . . . . . . . . . . . 464
42.4 Interrupts, I/O Ports, and DMA Channels . . . . . . . . . . . . . . . . . 466
42.5 Module Options and Device Configuration . . . . . . . . . . . . . . . . . 467
42.5.1 Five ways to pass options to a module . . . . . . . . . . . . . . . 467
42.5.2 Module documentation sources . . . . . . . . . . . . . . . . . . . 469
42.6 Configuring Various Devices . . . . . . . . . . . . . . . . . . . . . . . . . 470
42.6.1 Sound and pnpdump . . . . . . . . . . . . . . . . . . . . . . . . . . 470
42.6.2 Parallel port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
42.6.3 NIC — Ethernet, PCI, and old ISA . . . . . . . . . . . . . . . . . . 472
42.6.4 PCI vendor ID and device ID . . . . . . . . . . . . . . . . . . . . . 474
42.6.5 PCI and sound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
42.6.6 Commercial sound drivers . . . . . . . . . . . . . . . . . . . . . . 474
42.6.7 The ALSA sound project . . . . . . . . . . . . . . . . . . . . . . . 475
42.6.8 Multiple Ethernet cards . . . . . . . . . . . . . . . . . . . . . . . . 475
42.6.9 SCSI disks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
xxiv
Contents
42.6.10 SCSI termination and cooling . . . . . . . . . . . . . . . . . . . . . 477
42.6.11 CD writers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477
42.6.12 Serial devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
42.7 Modem Cards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480
42.8 More on LILO: Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
42.9 Building the Kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
42.9.1 Unpacking and patching . . . . . . . . . . . . . . . . . . . . . . . 481
42.9.2 Configuring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482
42.10 Using Packaged Kernel Source . . . . . . . . . . . . . . . . . . . . . . . . 483
42.11 Building, Installing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483
43 The X Window System 485
43.1 The X Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
43.2 Widget Libraries and Desktops . . . . . . . . . . . . . . . . . . . . . . . . 491

43.2.1 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
43.2.2 Qt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
43.2.3 Gtk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
43.2.4 GNUStep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
43.3 XFree86 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
43.3.1 Running X and key conventions . . . . . . . . . . . . . . . . . . . 493
43.3.2 Running X utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
43.3.3 Running two X sessions . . . . . . . . . . . . . . . . . . . . . . . . 495
43.3.4 Running a window manager . . . . . . . . . . . . . . . . . . . . . 495
43.3.5 X access control and remote display . . . . . . . . . . . . . . . . . 496
43.3.6 X selections, cutting, and pasting . . . . . . . . . . . . . . . . . . 497
43.4 The X Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
43.5 X Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
43.5.1 Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
43.5.2 Configuration documentation . . . . . . . . . . . . . . . . . . . . 498
43.5.3 XFree86 web site . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
43.6 X Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
43.6.1 Simple 16-color X server . . . . . . . . . . . . . . . . . . . . . . . . 499
43.6.2 Plug-and-Play operation . . . . . . . . . . . . . . . . . . . . . . . 500
43.6.3 Proper X configuration . . . . . . . . . . . . . . . . . . . . . . . . 501
43.7 Visuals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504
43.8 The startx and xinit Commands . . . . . . . . . . . . . . . . . . . . . 505
xxv
Contents
43.9 Login Screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
43.10 X Font Naming Conventions . . . . . . . . . . . . . . . . . . . . . . . . . 506
43.11 Font Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508
43.12 The Font Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509
44 UNIX Security 511
44.1 Common Attacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511

44.1.1 Buffer overflow attacks . . . . . . . . . . . . . . . . . . . . . . . . 512
44.1.2 Setuid programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513
44.1.3 Network client programs . . . . . . . . . . . . . . . . . . . . . . . 514
44.1.4 /tmp file vulnerability . . . . . . . . . . . . . . . . . . . . . . . . . 514
44.1.5 Permission problems . . . . . . . . . . . . . . . . . . . . . . . . . 514
44.1.6 Environment variables . . . . . . . . . . . . . . . . . . . . . . . . 515
44.1.7 Password sniffing . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
44.1.8 Password cracking . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
44.1.9 Denial of service attacks . . . . . . . . . . . . . . . . . . . . . . . . 515
44.2 Other Types of Attack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516
44.3 Counter Measures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516
44.3.1 Removing known risks: outdated packages . . . . . . . . . . . . 516
44.3.2 Removing known risks: compromised packages . . . . . . . . . . 517
44.3.3 Removing known risks: permissions . . . . . . . . . . . . . . . . 517
44.3.4 Password management . . . . . . . . . . . . . . . . . . . . . . . . 517
44.3.5 Disabling inherently insecure services . . . . . . . . . . . . . . . . 517
44.3.6 Removing potential risks: network . . . . . . . . . . . . . . . . . 518
44.3.7 Removing potential risks: setuid programs . . . . . . . . . . . . . 519
44.3.8 Making life difficult . . . . . . . . . . . . . . . . . . . . . . . . . . 520
44.3.9 Custom security paradigms . . . . . . . . . . . . . . . . . . . . . . 521
44.3.10 Proactive cunning . . . . . . . . . . . . . . . . . . . . . . . . . . . 522
44.4 Important Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
44.5 Security Quick-Quiz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
44.6 Security Auditing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
A Lecture Schedule 525
A.1 Hardware Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525
A.2 Student Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525
A.3 Lecture Style . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
xxvi
Contents

B LPI Certification Cross-Reference 531
B.1 Exam Details for 101 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
B.2 Exam Details for 102 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
C RHCE Certification Cross-Reference 543
C.1 RH020, RH030, RH033, RH120, RH130, and RH133 . . . . . . . . . . . . 543
C.2 RH300 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
C.3 RH220 (RH253 Part 1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
C.4 RH250 (RH253 Part 2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549
D LINUX Advocacy FAQ 551
D.1 LINUX Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
D.2 LINUX, GNU, and Licensing . . . . . . . . . . . . . . . . . . . . . . . . . 556
D.3 LINUX Distributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
D.4 LINUX Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563
D.5 LINUX Compared to Other Systems . . . . . . . . . . . . . . . . . . . . . 563
D.6 Migrating to LINUX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
D.7 Technical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
E The GNU General Public License Version 2 573
Index 581
xxvii

×