toc

37
v Table of Contents FOREWORD xlii PREFACE xliv ACKNOWLEDGMENTS xlvi SECTION ONE: BASIC ADMINISTRATION CHAPTER 1 WHERE TO START 3 Essential duties of the system administrator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Account provisioning. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Adding and removing hardware. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Performing backups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Installing and upgrading software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Monitoring the system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Maintaining local documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Vigilantly monitoring security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Fire fighting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Suggested background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Friction between UNIX and Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Linux distributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Example systems used in this book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Example Linux distributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Example UNIX distributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

Upload: ijaz-ahmed

Post on 20-Jul-2016

14 views

Category:

Documents


0 download

DESCRIPTION

TOC

TRANSCRIPT

v

Table of Contents

FOREWORD xliiPREFACE xlivACKNOWLEDGMENTS xlvi

SECTION ONE: BASIC ADMINISTRATION

CHAPTER 1 WHERE TO START 3Essential duties of the system administrator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

Account provisioning. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4Adding and removing hardware. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4Performing backups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5Installing and upgrading software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5Monitoring the system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5Maintaining local documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5Vigilantly monitoring security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6Fire fighting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

Suggested background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6Friction between UNIX and Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7Linux distributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9Example systems used in this book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

Example Linux distributions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11Example UNIX distributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

vi UNIX and Linux System Administration Handbook

System-specific administration tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13Notation and typographical conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13Units . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14Man pages and other on-line documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

Organization of the man pages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16man: read man pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17Storage of man pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17GNU Texinfo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

Other authoritative documentation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18System-specific guides . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18Package-specific documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19Books . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19RFCs and other Internet documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20The Linux Documentation Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

Other sources of information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20Ways to find and install software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

Determining whether software has already been installed . . . . . . . . . . . . . . . 22Adding new software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23Building software from source code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

System administration under duress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26Recommended reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

System administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Essential tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

Exercises. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

CHAPTER 2 SCRIPTING AND THE SHELL 29Shell basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

Command editing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30Pipes and redirection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31Variables and quoting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32Common filter commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

cut: separate lines into fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34sort: sort lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34uniq: print unique lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35wc: count lines, words, and characters . . . . . . . . . . . . . . . . . . . . . . . . . . . 35tee: copy input to two places . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35head and tail: read the beginning or end of a file . . . . . . . . . . . . . . . . . . 36grep: search text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

Table of Contents vii

bash scripting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37From commands to scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38Input and output. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40Command-line arguments and functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40Variable scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42Control flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45Arrays and arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

Regular expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48The matching process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49Literal characters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49Special characters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50Example regular expressions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51Captures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52Greediness, laziness, and catastrophic backtracking . . . . . . . . . . . . . . . . . . . . 53

Perl programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54Variables and arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55Array and string literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56Function calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56Type conversions in expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57String expansions and disambiguation of variable references . . . . . . . . . . . . 57Hashes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57References and autovivification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59Regular expressions in Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60Input and output. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61Control flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61Accepting and validating input. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63Perl as a filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64Add-on modules for Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

Python scripting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66Python quick start. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67Objects, strings, numbers, lists, dictionaries, tuples, and files . . . . . . . . . . . . 69Input validation example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

Scripting best practices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73Recommended reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

Shell basics and bash scripting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74Regular expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75Perl scripting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75Python scripting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

viii UNIX and Linux System Administration Handbook

CHAPTER 3 BOOTING AND SHUTTING DOWN 77Bootstrapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

Recovery boot to a shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78Steps in the boot process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78Kernel initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79Hardware configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79Creation of kernel processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79Operator intervention (recovery mode only) . . . . . . . . . . . . . . . . . . . . . . . . . . 80Execution of startup scripts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81Boot process completion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

Booting PCs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82GRUB: The GRand Unified Boot loader. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

Kernel options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84Multibooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

Booting to single-user mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86Single-user mode with GRUB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86Single-user mode on SPARC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86HP-UX single-user mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87AIX single-user mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

Working with startup scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87init and its run levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88Overview of startup scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89Red Hat startup scripts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91SUSE startup scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93Ubuntu startup scripts and the Upstart daemon . . . . . . . . . . . . . . . . . . . . . . . 94HP-UX startup scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95AIX startup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

Booting Solaris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97The Solaris Service Management Facility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97A brave new world: booting with SMF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

Rebooting and shutting down . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100shutdown: the genteel way to halt the system . . . . . . . . . . . . . . . . . . . . . . . . 100halt and reboot: simpler ways to shut down . . . . . . . . . . . . . . . . . . . . . . . . . 101

Exercises. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

CHAPTER 4 ACCESS CONTROL AND ROOTLY POWERS 103Traditional UNIX access control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

Filesystem access control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104Process ownership . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105The root account. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105Setuid and setgid execution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

Table of Contents ix

Modern access control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106Role-based access control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108SELinux: security-enhanced Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109POSIX capabilities (Linux) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109PAM: Pluggable Authentication Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . 109Kerberos: third-party cryptographic authentication . . . . . . . . . . . . . . . . . . . 110Access control lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

Real-world access control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110Choosing a root password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111Logging in to the root account . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112su: substitute user identity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113sudo: limited su. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113Password vaults and password escrow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

Pseudo-users other than root . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

CHAPTER 5 CONTROLLING PROCESSES 120Components of a process. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

PID: process ID number . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121PPID: parent PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121UID and EUID: real and effective user ID . . . . . . . . . . . . . . . . . . . . . . . . . . . 122GID and EGID: real and effective group ID . . . . . . . . . . . . . . . . . . . . . . . . . . 122Niceness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123Control terminal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

The life cycle of a process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123Signals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124kill: send signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127Process states . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128nice and renice: influence scheduling priority. . . . . . . . . . . . . . . . . . . . . . . . . . . . 129ps: monitor processes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130Dynamic monitoring with top, prstat, and topas . . . . . . . . . . . . . . . . . . . . . . . . . 133The /proc filesystem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135strace, truss, and tusc: trace signals and system calls . . . . . . . . . . . . . . . . . . . . . . 136Runaway processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138Recommended reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

CHAPTER 6 THE FILESYSTEM 140Pathnames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

Absolute and relative paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142Spaces in filenames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

Filesystem mounting and unmounting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143The organization of the file tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

x UNIX and Linux System Administration Handbook

File types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147Regular files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149Character and block device files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150Local domain sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151Named pipes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151Symbolic links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

File attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152The permission bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152The setuid and setgid bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153The sticky bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154ls: list and inspect files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154chmod: change permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156chown and chgrp: change ownership and group . . . . . . . . . . . . . . . . . . . . . 157umask: assign default permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158Linux bonus flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

Access control lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159A short and brutal history of UNIX ACLs . . . . . . . . . . . . . . . . . . . . . . . . . . . 160ACL implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161ACL support by system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162POSIX ACLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

Interaction between traditional modes and ACLs . . . . . . . . . . . . . . . . . 163Access determination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165ACL inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

NFSv4 ACLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166NFSv4 entities for which permissions can be specified. . . . . . . . . . . . . 168Access determination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168ACL inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169NFSv4 ACL viewing in Solaris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169Interactions between ACLs and modes . . . . . . . . . . . . . . . . . . . . . . . . . . 171Modifying NFSv4 ACLs in Solaris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

Exercises. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173

CHAPTER 7 ADDING NEW USERS 174The /etc/passwd file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

Login name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176Encrypted password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179UID (user ID) number. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180Default GID number . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181GECOS field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181Home directory. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182Login shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

The /etc/shadow and /etc/security/passwd files . . . . . . . . . . . . . . . . . . . . . . . . . . 183The /etc/group file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186

Table of Contents xi

Adding users: the basic steps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187Editing the passwd and group files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188Setting a password . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188Creating the home directory and installing startup files. . . . . . . . . . . . . . . . 189Setting permissions and ownerships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190Setting a mail home . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190Configuring roles and administrative privileges . . . . . . . . . . . . . . . . . . . . . . 190Final steps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

Adding users with useradd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191useradd on Ubuntu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192useradd on SUSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193useradd on Red Hat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193useradd on Solaris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194useradd on HP-UX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194useradd on AIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195useradd example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

Adding users in bulk with newusers (Linux) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197Removing users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198Disabling logins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200Managing users with system-specific tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201Reducing risk with PAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201Centralizing account management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

LDAP and Active Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202Single sign-on systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202Identity management systems. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

Recommended reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

CHAPTER 8 STORAGE 206I just want to add a disk! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207

Linux recipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207Solaris recipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208HP-UX recipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208AIX recipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

Storage hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209Hard disks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210Solid state disks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212

Storage hardware interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213The PATA interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215The SATA interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215Parallel SCSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216Serial SCSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219Which is better, SCSI or SATA? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219

Peeling the onion: the software side of storage . . . . . . . . . . . . . . . . . . . . . . . . . . . 220

xii UNIX and Linux System Administration Handbook

Attachment and low-level management of drives . . . . . . . . . . . . . . . . . . . . . . . . . 223Installation verification at the hardware level . . . . . . . . . . . . . . . . . . . . . . . . 223Disk device files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

Disk devices for Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224Disk devices for Solaris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225Disk devices for HP-UX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225Disk devices for AIX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226

Formatting and bad block management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226ATA secure erase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227hdparm: set disk and interface parameters (Linux) . . . . . . . . . . . . . . . . . . . 229Hard disk monitoring with SMART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230

Disk partitioning. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231Traditional partitioning. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233Windows-style partitioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234GPT: GUID partition tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235Linux partitioning. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236Solaris partitioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236HP-UX partitioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237

RAID: redundant arrays of inexpensive disks . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237Software vs. hardware RAID. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237RAID levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238Disk failure recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241Drawbacks of RAID 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241mdadm: Linux software RAID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242

Logical volume management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246LVM implementations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246Linux logical volume management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247

Volume snapshots. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249Resizing filesystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250

HP-UX logical volume management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251AIX logical volume management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253

Filesystems. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254Linux filesystems: the ext family. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255HP-UX filesystems: VxFS and HFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256AIX’s JFS2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257Filesystem terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257Filesystem polymorphism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258mkfs: format filesystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258fsck: check and repair filesystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259Filesystem mounting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260Setup for automatic mounting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260USB drive mounting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263Enabling swapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264

Table of Contents xiii

ZFS: all your storage problems solved . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264ZFS architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265Example: Solaris disk addition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266Filesystems and properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266Property inheritance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268One filesystem per user . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269Snapshots and clones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269Raw volumes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271Filesystem sharing filesystem through NFS, CIFS, and iSCSI . . . . . . . . . . . 271Storage pool management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272

Storage area networking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274SAN networks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275iSCSI: SCSI over IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276Booting from an iSCSI volume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277Vendor specifics for iSCSI initiators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281

CHAPTER 9 PERIODIC PROCESSES 283cron: schedule commands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283The format of crontab files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284Crontab management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286Linux and Vixie-cron extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287Some common uses for cron . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288

Simple reminders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288Filesystem cleanup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289Network distribution of configuration files . . . . . . . . . . . . . . . . . . . . . . . . . . 290Log file rotation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290

Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291

CHAPTER 10 BACKUPS 292Motherhood and apple pie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293

Perform all backups from a central location. . . . . . . . . . . . . . . . . . . . . . . . . . 293Label your media. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293Pick a reasonable backup interval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294Choose filesystems carefully . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294Make daily dumps fit on one piece of media . . . . . . . . . . . . . . . . . . . . . . . . . 294Keep media off-site . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295Protect your backups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295Limit activity during backups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296Verify your media . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297Develop a media life cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297Design your data for backups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298Prepare for the worst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298

xiv UNIX and Linux System Administration Handbook

Backup devices and media. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299Optical media: CD-R/RW, DVD±R/RW, DVD-RAM, and Blu-ray . . . . . 299Portable and removable hard disks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300Magnetic tapes in general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301Small tape drives: 8mm and DDS/DAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301DLT/S-DLT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301AIT and SAIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302VXA/VXA-X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302LTO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302Jukeboxes, stackers, and tape libraries. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302Hard disks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303Internet and cloud backup services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303Summary of media types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304What to buy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304

Saving space and time with incremental backups . . . . . . . . . . . . . . . . . . . . . . . . . 305A simple schedule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306A moderate schedule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307

Setting up a backup regime with dump . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307Dumping filesystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308Restoring from dumps with restore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310Restoring entire filesystems. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313Restoring to new hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314

Dumping and restoring for upgrades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314Using other archiving programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315

tar: package files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315dd: twiddle bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316ZFS backups. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316

Using multiple files on a single tape . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317Bacula . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318

The Bacula model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319Setting up Bacula . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320Installing the database and Bacula daemons . . . . . . . . . . . . . . . . . . . . . . . . . 320Configuring the Bacula daemons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321Common configuration sections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322bacula-dir.conf: director configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324

Catalog resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324Storage resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324Pool resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325Schedule resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325Client resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325FileSet resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326Job resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326

Table of Contents xv

bacula-sd.conf: storage daemon configuration . . . . . . . . . . . . . . . . . . . . . . . 327The Director resource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327The Storage resource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327Device resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327Autochanger resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328

bconsole.conf: console configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328Installing and configuring the client file daemon . . . . . . . . . . . . . . . . . . . . . 328Starting the Bacula daemons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329Adding media to pools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329Running a manual backup. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330Running a restore job . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330Backing up Windows clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333Monitoring Bacula configurations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334Bacula tips and tricks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334Alternatives to Bacula. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335

Commercial backup products. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335ADSM/TSM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336Veritas NetBackup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336EMC NetWorker. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337Other alternatives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337

Recommended reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337

CHAPTER 11 SYSLOG AND LOG FILES 340Finding log files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341

Files not to manage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342Vendor specifics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344

Syslog: the system event logger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344Syslog architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345Configuring syslogd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345Config file examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349

Stand-alone machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349Network logging client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349Central logging host . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350

Syslog debugging. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351Alternatives to syslog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351Linux kernel and boot-time logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352

AIX logging and error handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353Syslog configuration under AIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355

logrotate: manage log files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356Condensing log files to useful information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358Logging policies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361

xvi UNIX and Linux System Administration Handbook

CHAPTER 12 SOFTWARE INSTALLATION AND MANAGEMENT 362Installing Linux and OpenSolaris. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363

Netbooting PCs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363Setting up PXE for Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364Netbooting non-PCs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364Using Kickstart: the automated installer for Red Hat Enterprise Linux. . . 365

Setting up a Kickstart configuration file . . . . . . . . . . . . . . . . . . . . . . . . . 365Building a Kickstart server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366Pointing Kickstart at your config file . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

Using AutoYaST: SUSE’s automated installation tool . . . . . . . . . . . . . . . . . 367Automating installation with the Ubuntu installer . . . . . . . . . . . . . . . . . . . . 368

Installing Solaris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370Network installations with JumpStart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371Network installations with the Automated Installer . . . . . . . . . . . . . . . . . . . 375

Installing HP-UX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377Automating Ignite-UX installations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379

Installing AIX with the Network Installation Manager . . . . . . . . . . . . . . . . . . . . 380Managing packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381Managing Linux packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382

rpm: manage RPM packages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382dpkg: manage .deb packages in Ubuntu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383

Using high-level Linux package management systems. . . . . . . . . . . . . . . . . . . . . 384Package repositories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385RHN: the Red Hat Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387APT: the Advanced Package Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387apt-get configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388An example /etc/apt/sources.list file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389Creation of a local repository mirror. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390apt-get automation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391yum: release management for RPM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391Zypper package management for SUSE: now with more ZYpp! . . . . . . . . . 392

Managing packages for UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393Solaris packaging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394HP-UX packaging. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394Software management in AIX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396

Revision control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397Backup file creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397Formal revision control systems. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398Subversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401

Software localization and configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404Organizing your localization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406Compiling locally . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407Distributing localizations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408

Table of Contents xvii

Using configuration management tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408cfengine: computer immune system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408LCFG: a large-scale configuration system. . . . . . . . . . . . . . . . . . . . . . . . . . . . 409Template Tree 2: cfengine helper. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410DMTF/CIM: the Common Information Model . . . . . . . . . . . . . . . . . . . . . . 410

Sharing software over NFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411Package namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411Dependency management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412Wrapper scripts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413

Recommended reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414

CHAPTER 13 DRIVERS AND THE KERNEL 415Kernel adaptation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416Drivers and device files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417

Device files and device numbers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418Device file creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419Naming conventions for devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420Custom kernels versus loadable modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420

Linux kernel configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421Tuning Linux kernel parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421Building a Linux kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423If it ain’t broke, don’t fix it. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423Configuring kernel options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423Building the kernel binary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425Adding a Linux device driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425

Solaris kernel configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427The Solaris kernel area . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427Configuring the kernel with /etc/system . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428Adding a Solaris device driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430Debugging a Solaris configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430

HP-UX kernel configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431Management of the AIX kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432

The Object Data Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432Kernel tuning. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434

Loadable kernel modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434Loadable kernel modules in Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435Loadable kernel modules in Solaris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436

Linux udev for fun and profit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437Linux sysfs: a window into the souls of devices . . . . . . . . . . . . . . . . . . . . . . . 438Exploring devices with udevadm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439Constructing rules and persistent names . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439

Recommended reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444

xviii UNIX and Linux System Administration Handbook

SECTION TWO: NETWORKING

CHAPTER 14 TCP/IP NETWORKING 447TCP/IP and its relationship to the Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447

Who runs the Internet? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448Network standards and documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449

Networking road map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450IPv4 and IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451Packets and encapsulation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452Ethernet framing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453Maximum transfer unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453

Packet addressing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454Hardware (MAC) addressing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454IP addressing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455Hostname “addressing” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456Address types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456

IP addresses: the gory details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457IPv4 address classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457Subnetting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458Tricks and tools for subnet arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459CIDR: Classless Inter-Domain Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460Address allocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461Private addresses and network address translation (NAT) . . . . . . . . . . . . . 462IPv6 addressing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464

Routing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465Routing tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466ICMP redirects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467

ARP: the Address Resolution Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468DHCP: the Dynamic Host Configuration Protocol . . . . . . . . . . . . . . . . . . . . . . . 469

DHCP software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470How DHCP works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470ISC’s DHCP software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471

Security issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472IP forwarding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472ICMP redirects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473Source routing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473Broadcast pings and other directed broadcasts . . . . . . . . . . . . . . . . . . . . . . . 473IP spoofing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473Host-based firewalls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474Virtual private networks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475

PPP: the Point-to-Point Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476

Table of Contents xix

Basic network configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476Hostname and IP address assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477ifconfig: configure network interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478Network hardware options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481route: configure static routes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481DNS configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483

System-specific network configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484Linux networking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484

NetworkManager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485Ubuntu network configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486SUSE network configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486Red Hat network configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487Linux network hardware options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489Linux TCP/IP options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490Security-related kernel variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492Linux NAT and packet filtering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493

Solaris networking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494Solaris basic network configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494Solaris configuration examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496Solaris DHCP configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497ndd: TCP/IP and interface tuning for Solaris. . . . . . . . . . . . . . . . . . . . . . . . . 498Solaris security. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499Solaris firewalls and filtering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499Solaris NAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500Solaris networking quirks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501

HP-UX networking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501Basic network configuration for HP-UX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501HP-UX configuration examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502HP-UX DHCP configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504HP-UX dynamic reconfiguration and tuning . . . . . . . . . . . . . . . . . . . . . . . . 504HP-UX security, firewalls, filtering, and NAT . . . . . . . . . . . . . . . . . . . . . . . . 505

AIX networking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506no: manage AIX network tuning parameters . . . . . . . . . . . . . . . . . . . . . . . . . 507

Recommended reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509

CHAPTER 15 ROUTING 511Packet forwarding: a closer look. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512Routing daemons and routing protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515

Distance-vector protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515Link-state protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516Cost metrics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517Interior and exterior protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517

xx UNIX and Linux System Administration Handbook

Protocols on parade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518RIP and RIPng: Routing Information Protocol . . . . . . . . . . . . . . . . . . . . . . . 518OSPF: Open Shortest Path First . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519EIGRP: Enhanced Interior Gateway Routing Protocol. . . . . . . . . . . . . . . . . 519IS-IS: the ISO “standard” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520Router Discovery Protocol and Neighbor Discovery Protocol . . . . . . . . . . 520BGP: the Border Gateway Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520

Routing strategy selection criteria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521Routing daemons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522

routed: obsolete RIP implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522gated: first-generation multiprotocol routing daemon . . . . . . . . . . . . . . . . 523Quagga: mainstream routing daemon. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523ramd: multiprotocol routing system for HP-UX. . . . . . . . . . . . . . . . . . . . . . 524XORP: router in a box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524Vendor specifics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525

Cisco routers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525Recommended reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528Exercises. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530

CHAPTER 16 NETWORK HARDWARE 531Ethernet: the Swiss Army knife of networking. . . . . . . . . . . . . . . . . . . . . . . . . . . . 532

How Ethernet works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532Ethernet topology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533Unshielded twisted pair cabling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534Optical fiber. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536Connecting and expanding Ethernets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537

Hubs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537Switches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538VLAN-capable switches. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539Routers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539

Autonegotiation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539Power over Ethernet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540Jumbo frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541

Wireless: ethernet for nomads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541Wireless security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543Wireless switches and lightweight access points . . . . . . . . . . . . . . . . . . . . . . 543

DSL and cable modems: the last mile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543Network testing and debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544Building wiring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545

UTP cabling options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545Connections to offices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546Wiring standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546

Table of Contents xxi

Network design issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547Network architecture vs. building architecture . . . . . . . . . . . . . . . . . . . . . . . 547Expansion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548Congestion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548Maintenance and documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549

Management issues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549Recommended vendors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550

Cables and connectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550Test equipment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550Routers/switches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550

Recommended reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551

CHAPTER 17 DNS: THE DOMAIN NAME SYSTEM 552Who needs DNS? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554

Managing your DNS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554How DNS works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555

Resource records. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555Delegation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555Caching and efficiency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556Multiple answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557

DNS for the impatient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558Adding a new machine to DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558Configuring a DNS client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561

Name servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563Authoritative and caching-only servers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563Recursive and nonrecursive servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565

The DNS namespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566Registering a second-level domain name . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567Creating your own subdomains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567

Designing your DNS environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568Namespace management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568Authoritative servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569Caching servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569Hardware requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570Security. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571Summing up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571

What’s new in DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572The DNS database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574

Commands in zone files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574Resource records. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576The SOA record . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579NS records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581A records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582

xxii UNIX and Linux System Administration Handbook

PTR records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582MX records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583CNAME records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585The CNAME hack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585SRV records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587TXT records. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588IPv6 resource records. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589

IPv6 forward records – AAAA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589IPv6 reverse records – PTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589

SPF records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590DKIM and ADSP records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591SSHFP resource records. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594DNSSEC resource records. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595Glue records: links between zones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596

The BIND software. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597Version determination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598Components of BIND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600Configuration files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600The include statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602The options statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602The acl statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609The (TSIG) key statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609The trusted-keys statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610The server statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610The masters statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611The logging statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612The statistics-channels statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612The zone statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612

Configuring the master server for a zone . . . . . . . . . . . . . . . . . . . . . . . . 613Configuring a slave server for a zone. . . . . . . . . . . . . . . . . . . . . . . . . . . . 614Setting up the root server hints. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614Setting up a forwarding zone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615

The controls statement for rndc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615Split DNS and the view statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617

BIND configuration examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618The localhost zone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619A small security company . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620The Internet Systems Consortium, isc.org . . . . . . . . . . . . . . . . . . . . . . . . . . . 623

The NSD/Unbound software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625Installing and configuring NSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625

Fundamental differences from BIND . . . . . . . . . . . . . . . . . . . . . . . . . . . 626NSD configuration example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627NSD key definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628NSD global configuration options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629NSD zone-specific configuration options . . . . . . . . . . . . . . . . . . . . . . . . 631

Table of Contents xxiii

Running nsd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632Installing and configuring Unbound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632

Updating zone files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638Zone transfers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639BIND dynamic updates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640

Security issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642Access control lists in BIND, revisited . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643Open resolvers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644Running in a chrooted jail. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645Secure server-to-server communication with TSIG and TKEY . . . . . . . . . 645Setting up TSIG for BIND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646TSIG in NSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648DNSSEC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648DNSSEC policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652DNSSEC resource records. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653Turning on DNSSEC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654Key pair generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655Zone signing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657The DNSSEC chain of trust. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660DLV: domain lookaside validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661DNSSEC key rollover . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662DNSSEC tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663

ldns tools, nlnetlabs.nl/projects/ldns . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664Sparta tools, dnssec-tools.org . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664RIPE tools, ripe.net . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665Vantages tools, vantage-points.org . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665

Debugging DNSSEC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665Microsoft and DNS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667Testing and debugging. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667

Logging in BIND. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667Channels. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668Categories. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669Log Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669Sample BIND logging configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671Debug levels in BIND. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672

Logging in NSD/Unbound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673Name server control programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674

Using BIND’s rndc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674Using NSD’s nsdc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675Using unbound-control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675

Name server statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676Debugging with dig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677Lame delegations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678DNS sanity checking tools. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679Performance issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680

xxiv UNIX and Linux System Administration Handbook

Vendor specifics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681Specifics for Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681Specifics for Solaris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684Specifics for HP-UX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684Specifics for AIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685

Recommended reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686Mailing lists and newsgroups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686Books and other documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687On-line resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688The RFCs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688

Exercises. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688

CHAPTER 18 THE NETWORK FILE SYSTEM 690Introduction to network file services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690

Issues of state . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691Performance concerns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691Security. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691

The NFS approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692Protocol versions and history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692Transport protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693State. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693File system exports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693File locking. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694Security concerns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695Identity mapping in version 4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696Root access and the nobody account . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697Performance considerations in version 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698Disk quotas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698

Server-side NFS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698The share command and dfstab file (Solaris, HP-UX) . . . . . . . . . . . . . . . . 700The exportfs command and the exports file (Linux, AIX) . . . . . . . . . . . . . 702Exports in AIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702Exports in Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703nfsd: serve files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705

Client-side NFS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706Mounting remote filesystems at boot time . . . . . . . . . . . . . . . . . . . . . . . . . . . 708Restricting exports to privileged ports. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709

Identity mapping for NFS version 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709nfsstat: dump NFS statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710Dedicated NFS file servers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711Automatic mounting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711

Indirect maps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713Direct maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713Master maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714

Table of Contents xxv

Executable maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714Automount visibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715Replicated filesystems and automount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715Automatic automounts (V3; all but Linux) . . . . . . . . . . . . . . . . . . . . . . . . . . 716Specifics for Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717

Recommended reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718

CHAPTER 19 SHARING SYSTEM FILES 719What to share . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720Copying files around . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721

The NFS option. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721Push systems vs. pull systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722rdist: push files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722rsync: transfer files more securely . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725Pulling files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727

LDAP: the Lightweight Directory Access Protocol . . . . . . . . . . . . . . . . . . . . . . . . 728The structure of LDAP data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728The point of LDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 730LDAP documentation and specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731OpenLDAP: the traditional open source LDAP server . . . . . . . . . . . . . . . . . 731389 Directory Server: alternative open source LDAP server . . . . . . . . . . . . 732LDAP instead of /etc/passwd and /etc/group . . . . . . . . . . . . . . . . . . . . . . . . 733LDAP querying . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734LDAP and security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735

NIS: the Network Information Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736The NIS model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736Understanding how NIS works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736NIS security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 738

Prioritizing sources of administrative information . . . . . . . . . . . . . . . . . . . . . . . . 739nscd: cache the results of lookups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740

Recommended reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741

CHAPTER 20 ELECTRONIC MAIL 742Mail systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744

User agents. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744Submission agents. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745Transport agents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746Local delivery agents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746Message stores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746Access agents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747So many pieces, so little time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747

xxvi UNIX and Linux System Administration Handbook

The anatomy of a mail message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748Reading mail headers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748

The SMTP protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750You had me at EHLO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751SMTP error codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751SMTP authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752

Mail system design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753Using mail servers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754

Mail aliases. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756Getting aliases from files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758Mailing to files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759Mailing to programs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759Aliasing by example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760Building the hashed alias database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760Using mailing lists and list wrangling software . . . . . . . . . . . . . . . . . . . . . . . 760Software packages for maintaining mailing lists . . . . . . . . . . . . . . . . . . . . . . 761

Content scanning: spam and malware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761Spam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762Forgeries. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763Message privacy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763Spam filtering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764When to filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764Greylisting/DCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765SpamAssassin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765Blacklists. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766Whitelists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766Miltering: mail filtering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767SPF and Sender ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767DomainKeys, DKIM, and ADSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768MTA-specific antispam features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768MailScanner. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769amavisd-new . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769

How amavisd works. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 770amavisd installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771Basic amavisd configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771amavisd-new tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 772

Tests of your MTA’s scanning effectiveness . . . . . . . . . . . . . . . . . . . . . . . . . . 773Email configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774sendmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775

The switch file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776Starting sendmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776Mail queues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778

Table of Contents xxvii

sendmail configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778The m4 preprocessor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779The sendmail configuration pieces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779A configuration file built from a sample .mc file . . . . . . . . . . . . . . . . . . . . . . 781

sendmail configuration primitives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782Tables and databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782Generic macros and features. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783

OSTYPE macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783DOMAIN macro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784MAILER macro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784FEATURE macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784use_cw_file feature. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784redirect feature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 785always_add_domain feature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 785access_db feature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 785virtusertable feature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786ldap_routing feature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786Masquerading features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787MAIL_HUB and SMART_HOST macros. . . . . . . . . . . . . . . . . . . . . . . . . . 787

Client configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 788Configuration options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 789Spam-related features in sendmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 789

Relay control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791User or site blacklisting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792Throttles, rates, and connection limits . . . . . . . . . . . . . . . . . . . . . . . . . . 792

Milter configuration in sendmail. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794amavisd and sendmail connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794

Security and sendmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795Ownerships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 797Safer mail to files and programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798Privacy options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 799Running a chrooted sendmail (for the truly paranoid) . . . . . . . . . . . . . . . . 800Denial of service attacks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 800SASL: the Simple Authentication and Security Layer . . . . . . . . . . . . . . . . . . 801TLS: Transport Layer Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801

sendmail performance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802Delivery modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802Queue groups and envelope splitting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802Queue runners. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802Load average controls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803Undeliverable messages in the queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803Kernel tuning. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804

xxviii UNIX and Linux System Administration Handbook

sendmail testing and debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805Queue monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806Logging. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806

Exim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807Exim installation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808Exim startup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 810Exim utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811Exim configuration language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811Exim configuration file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812Global options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813

Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814

ACLs (access control lists). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815Content scanning at ACL time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818

Scanning for viruses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818Scanning for spam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 819

Authenticators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820Routers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821

The accept router . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821The dnslookup router . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822The manualroute router . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822The redirect router. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823Per-user filtering via .forward files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823

Transports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824The appendfile transport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824The smtp transport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824

Retry configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825Rewriting configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825Local scan function. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825amavisd and Exim connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826Logging. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827

Postfix. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828Postfix architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828

Receiving mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829Managing mail-waiting queues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829Sending mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830

Security. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830Postfix commands and documentation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830Postfix configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831

What to put in main.cf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831Basic settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831Use of postconf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832

Table of Contents xxix

Lookup tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833Local delivery. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834

Virtual domains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835Virtual alias domains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835Virtual mailbox domains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836

Access control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837Access tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 838Authentication of clients and encryption . . . . . . . . . . . . . . . . . . . . . . . . 839

Fighting spam and viruses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 840Blacklists. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 840Spam-fighting example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841SpamAssassin and procmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841Policy daemons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841Content filtering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 842

Content filtering with amavisd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 842Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844

Looking at the queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844Soft-bouncing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845Testing access control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845

DKIM Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845DKIM: DomainKeys Identified Mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 846DKIM miltering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 846DKIM configuration in amavisd-new. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 849DKIM in sendmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 850DKIM in Exim. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 850

Signing outgoing messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 850Verifying incoming signed messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851A complete example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851

DKIM in Postfix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 852Integrated email solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853Recommended reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 854

General spam references . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 854sendmail references . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 854Exim references . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 854Postfix references . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855RFCs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855

Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855sendmail-specific exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 857Exim-specific exercises. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 858Postfix-specific exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 858

CHAPTER 21 NETWORK MANAGEMENT AND DEBUGGING 859Network troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 860ping: check to see if a host is alive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 861

xxx UNIX and Linux System Administration Handbook

SmokePing: gather ping statistics over time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 864traceroute: trace IP packets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865netstat: get network statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 868

Inspecting interface configuration information. . . . . . . . . . . . . . . . . . . . . . . 868Monitoring the status of network connections . . . . . . . . . . . . . . . . . . . . . . . 870Identifying listening network services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 871Examining the routing table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 871Viewing operational statistics for network protocols . . . . . . . . . . . . . . . . . . 872

Inspection of live interface activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873Packet sniffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 874

tcpdump: industry-standard packet sniffer . . . . . . . . . . . . . . . . . . . . . . . . . . 875Wireshark and TShark: tcpdump on steroids . . . . . . . . . . . . . . . . . . . . . . . . 877

The ICSI Netalyzr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 878Network management protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 879SNMP: the Simple Network Management Protocol . . . . . . . . . . . . . . . . . . . . . . . 880

SNMP organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 881SNMP protocol operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 882RMON: remote monitoring MIB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 883

The NET-SNMP agent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 883Network management applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 884

The NET-SNMP tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885SNMP data collection and graphing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 886Nagios: event-based service monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 887The ultimate network monitoring package: still searching . . . . . . . . . . . . . 888Commercial management platforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 889

NetFlow: connection-oriented monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 890Monitoring NetFlow data with nfdump and NfSen . . . . . . . . . . . . . . . . . . . 890Setting up NetFlow on a Cisco router . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 892

Recommended reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 893Exercises. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 894

CHAPTER 22 SECURITY 896Is UNIX secure? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 897How security is compromised . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 898

Social engineering. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 898Software vulnerabilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899Configuration errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900

Security tips and philosophy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 901Patches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 901Unnecessary services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 902Remote event logging. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 902Backups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903Viruses and worms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903Trojan horses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903

Table of Contents xxxi

Rootkits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904Packet filtering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904Passwords. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905Vigilance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905General philosophy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905

Passwords and user accounts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 906Password aging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 906Group logins and shared logins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 907User shells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 907Rootly entries. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 907

PAM: cooking spray or authentication wonder? . . . . . . . . . . . . . . . . . . . . . . . . . . 908System support for PAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 908PAM configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 908A detailed Linux configuration example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 911

Setuid programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 912Effective use of chroot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 913Security power tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 914

Nmap: network port scanner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 914Nessus: next-generation network scanner . . . . . . . . . . . . . . . . . . . . . . . . . . . 916John the Ripper: finder of insecure passwords . . . . . . . . . . . . . . . . . . . . . . . . 916hosts_access: host access control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 917Bro: the programmable network intrusion detection system. . . . . . . . . . . . 918Snort: the popular network intrusion detection system . . . . . . . . . . . . . . . . 918OSSEC: host-based intrusion detection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 919

OSSEC basic concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 920OSSEC installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 920OSSEC configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 921

Mandatory Access Control (MAC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 922Security-enhanced Linux (SELinux) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 923

Cryptographic security tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 924Kerberos: a unified approach to network security . . . . . . . . . . . . . . . . . . . . . 924PGP: Pretty Good Privacy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 925SSH: the secure shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 926Stunnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 930

Firewalls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 932Packet-filtering firewalls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 932How services are filtered . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933Stateful inspection firewalls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 934Firewalls: how safe are they? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935

Linux firewall features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935Rules, chains, and tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935Rule targets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936iptables firewall setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 937A complete example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 937

IPFilter for UNIX systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 939

xxxii UNIX and Linux System Administration Handbook

Virtual private networks (VPNs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942IPsec tunnels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 943All I need is a VPN, right? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 943

Certifications and standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 944Certifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 945Security standards. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 945

ISO 27002. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946PCI DSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946NIST 800 series . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 947Common Criteria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 947OWASP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 947

Sources of security information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 947CERT: a registered service mark of Carnegie Mellon University . . . . . . . . 948SecurityFocus.com and the BugTraq mailing list . . . . . . . . . . . . . . . . . . . . . 948Schneier on Security. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 948SANS: the System Administration, Networking, and Security Institute . . 948Vendor-specific security resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 949Other mailing lists and web sites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 950

What to do when your site has been attacked . . . . . . . . . . . . . . . . . . . . . . . . . . . . 950Recommended reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 952Exercises. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 954

CHAPTER 23 WEB HOSTING 956Web hosting basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 957

Resource locations on the web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 957Uniform resource locators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 957How HTTP works. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 958Content generation on the fly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 959

Embedded interpreters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 959FastCGI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 959Script security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 960

Application servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 960Load balancing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 961

HTTP server installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 963Choosing a server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 963Installing Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 964Configuring Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 965Running Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 966Analyzing log files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 966Optimizing for high-performance hosting of static content . . . . . . . . . . . . 967

Virtual interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 967Using name-based virtual hosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 968

Table of Contents xxxiii

Configuring virtual interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 968Linux virtual interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 968Solaris virtual interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 969HP-UX virtual interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 970AIX virtual interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 970

Telling Apache about virtual interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 971The Secure Sockets Layer (SSL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 971

Generating a Certificate Signing Request . . . . . . . . . . . . . . . . . . . . . . . . . . . . 972Configuring Apache to use SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 973

Caching and proxy servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974Using the Squid cache and proxy server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975Setting up Squid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975Reverse-proxying with Apache. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976

Scaling beyond your limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977Cloud computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 978Co-lo hosting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 978Content distribution networks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 978

Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 979

SECTION THREE: BUNCH O' STUFF

CHAPTER 24 VIRTUALIZATION 983Virtual vernacular. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 984

Full virtualization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 985Paravirtualization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 986Operating system virtualization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 986Native virtualization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 987Cloud computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 987Live migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 988Comparison of virtualization technologies. . . . . . . . . . . . . . . . . . . . . . . . . . . 988

Benefits of virtualization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 988A practical approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 989Virtualization with Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 991

Introduction to Xen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 991Xen essentials. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 992Xen guest installation with virt-install . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 993Xen live migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 994KVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 995KVM installation and usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 996

Solaris zones and containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997AIX workload partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1001

xxxiv UNIX and Linux System Administration Handbook

Integrity Virtual Machines in HP-UX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1003Creating and installing virtual machines . . . . . . . . . . . . . . . . . . . . . . . . . . . 1003

VMware: an operating system in its own right . . . . . . . . . . . . . . . . . . . . . . . . . . 1005Amazon Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1005Recommended reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1010Exercises. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1010

CHAPTER 25 THE X WINDOW SYSTEM 1011The display manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1013Process for running an X application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1014

The DISPLAY environment variable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1015Client authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1016X connection forwarding with SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1017

X server configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1019Device sections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1021Monitor sections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1021Screen sections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1022InputDevice sections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1022ServerLayout sections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1024xrandr: not your father’s X server configurator. . . . . . . . . . . . . . . . . . . . . . 1025Kernel mode setting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1025

X server troubleshooting and debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1026Special keyboard combinations for X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1026When X servers attack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1027

A brief note on desktop environments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1028KDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1029GNOME. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1029Which is better, GNOME or KDE? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1030

Recommended reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1030Exercises. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1031

CHAPTER 26 PRINTING 1032Printing-system architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1033

Major printing systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1033Print spoolers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1034

CUPS printing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1034Interfaces to the printing system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1034The print queue. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1035Multiple printers and queues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1036Printer instances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1036Network printing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1036Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1037CUPS server administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1038

Table of Contents xxxv

Network print server setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1039Printer autoconfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1040Network printer configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1040Printer configuration examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1041Printer class setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1041Service shutoff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1041Other configuration tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1042

Printing from desktop environments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1043kprinter: print documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1044Konqueror and printing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1045

System V printing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1045Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1045Destinations and classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1046A brief description of lp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1047lpsched and lpshut: start and stop printing . . . . . . . . . . . . . . . . . . . . . . . . .1047lpadmin: configure the printing environment. . . . . . . . . . . . . . . . . . . . . . .1048lpadmin examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1050lpstat: get status information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1051cancel: remove print jobs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1051accept and reject: control spooling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1051enable and disable: control printing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1052lpmove: transfer jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1052Interface programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1052What to do when the printing system is completely hosed . . . . . . . . . . . .1053

BSD and AIX printing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1054An overview of the BSD printing architecture . . . . . . . . . . . . . . . . . . . . . . .1054Printing environment control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1055lpd: spool print jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1056lpr: submit print jobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1056lpq: view the printing queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1056lprm: remove print jobs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1057lpc: make administrative changes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1057The /etc/printcap file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1059printcap variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1060

sd: spool directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1061lf: error log file. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1061lp: device name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1062rw: device open mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1062af: accounting file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1062mx: file size limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1062rm and rp: remote access information. . . . . . . . . . . . . . . . . . . . . . . . . .1062of, if: printing filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1063printcap variables for serial devices. . . . . . . . . . . . . . . . . . . . . . . . . . . .1064printcap extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1064

xxxvi UNIX and Linux System Administration Handbook

What a long, strange trip it’s been . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1065Printing history and the rise of print systems . . . . . . . . . . . . . . . . . . . . . . . 1065Printer diversity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1066

Common printing software. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1067Printer languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1068

PostScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1069PCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1069PDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1070XPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1070PJL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1070Printer drivers and their handling of PDLs . . . . . . . . . . . . . . . . . . . . . . . . . 1071

PPD files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1072Paper sizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1073Printer practicalities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1075

Printer selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1075GDI printers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1076Double-sided printing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1076Other printer accessories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1077Serial and parallel printers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1077Network printers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1077Other printer advice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1077

Use banner pages only if you have to. . . . . . . . . . . . . . . . . . . . . . . . . . . 1078Fan your paper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1078Provide recycling bins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1078Use previewers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1078Buy cheap printers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1079Keep extra toner cartridges on hand . . . . . . . . . . . . . . . . . . . . . . . . . . . 1079Pay attention to the cost per page. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1080Consider printer accounting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1081Secure your printers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1081

Troubleshooting tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1081Restarting a print daemon. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1081Logging. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1082Problems with direct printing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1082Network printing problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1082Distribution-specific problems. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1083

Recommended reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1083Exercises. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1084

CHAPTER 27 DATA CENTER BASICS 1085Data center reliability tiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1086Cooling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1087

Electronic gear. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1088Light fixtures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1088

Table of Contents xxxvii

Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1089Total heat load. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1089Hot aisles and cold aisles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1089Humidity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1091Environmental monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1091

Power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1091Rack power requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1092kVA vs. kW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1093Remote control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1094

Racks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1094Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1095Recommended reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1095Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1096

CHAPTER 28 GREEN IT 1097Green IT initiation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1098The green IT eco-pyramid. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1099Green IT strategies: data center . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1100

Application consolidation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1101Server consolidation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1102SAN storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1103Server virtualization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1103Only-as-needed servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1104Granular utilization and capacity planning . . . . . . . . . . . . . . . . . . . . . . . . .1104Energy-optimized server configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . .1104

Power-saving options for Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1104Filesystem power savings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1105

Cloud computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1106Free cooling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1106Efficient data center cooling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1106Degraded mode for outages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1106Equipment life extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1107Warmer temperature in the data center . . . . . . . . . . . . . . . . . . . . . . . . . . . .1108Low-power equipment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1108

Green IT strategies: user workspace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1108Green IT friends . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1110Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1111

CHAPTER 29 PERFORMANCE ANALYSIS 1112What you can do to improve performance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1114Factors that affect performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1115How to analyze performance problems. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1117

xxxviii UNIX and Linux System Administration Handbook

System performance checkup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1118Taking stock of your hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1118Gathering performance data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1121Analyzing CPU usage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1121How the system manages memory. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1124Analyzing memory usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1125Analyzing disk I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1127xdd: analyze disk subsystem performance . . . . . . . . . . . . . . . . . . . . . . . . . . 1129sar: collect and report statistics over time. . . . . . . . . . . . . . . . . . . . . . . . . . . 1129nmon and nmon_analyser: monitor in AIX . . . . . . . . . . . . . . . . . . . . . . . . 1130Choosing a Linux I/O scheduler. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1130oprofile: profile Linux systems in detail . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1131

Help! My system just got really slow! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1131Recommended reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1133Exercises. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1134

CHAPTER 30 COOPERATING WITH WINDOWS 1135Logging in to a UNIX system from Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . 1135Accessing remote desktops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1136

X server running on a Windows computer . . . . . . . . . . . . . . . . . . . . . . . . . 1136VNC: Virtual Network Computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1138Windows RDP: Remote Desktop Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . 1138

Running Windows and Windows-like applications . . . . . . . . . . . . . . . . . . . . . . 1139Dual booting, or why you shouldn’t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1140Microsoft Office alternatives. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1140

Using command-line tools with Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1140Windows compliance with email and web standards . . . . . . . . . . . . . . . . . . . . . 1141Sharing files with Samba and CIFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1142

Samba: CIFS server for UNIX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1142Samba installation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1143Filename encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1145User authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1145Basic file sharing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1146Group shares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1146Transparent redirection with MS DFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1147smbclient: a simple CIFS client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1148Linux client-side support for CIFS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1148

Sharing printers with Samba. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1149Installing a printer driver from Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . 1151Installing a printer driver from the command line . . . . . . . . . . . . . . . . . . . 1152

Debugging Samba. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1152Active Directory authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1154

Getting ready for Active Directory integration . . . . . . . . . . . . . . . . . . . . . . 1155Configuring Kerberos for Active Directory integration . . . . . . . . . . . . . . . 1156

Table of Contents xxxix

Samba as an Active Directory domain member. . . . . . . . . . . . . . . . . . . . . .1157PAM configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1159Alternatives to winbind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1160

Recommended reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1160Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1161

CHAPTER 31 SERIAL DEVICES AND TERMINALS 1162The RS-232C standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1163Alternative connectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1165

The DB-9 variant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1166The RJ-45 variant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1166

Hard and soft carrier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1167Hardware flow control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1168Serial device files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1168setserial: set serial port parameters under Linux. . . . . . . . . . . . . . . . . . . . . . . . .1169Pseudo-terminals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1170Configuration of terminals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1171

The login process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1171The /etc/ttytype file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1172The /etc/gettytab file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1173The /etc/gettydefs file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1173The /etc/inittab file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1174getty configuration for Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1175Ubuntu Upstart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1176Solaris and sacadm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1176

Special characters and the terminal driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1177stty: set terminal options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1178tset: set options automatically . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1178Terminal unwedging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1179Debugging a serial line. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1180Connecting to serial device consoles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1180Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1182

CHAPTER 32 MANAGEMENT, POLICY, AND POLITICS 1183The purpose of IT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1184

Budgeting and spending . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1184IT policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1185Service level agreements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1186

Scope and descriptions of services . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1187Queue management policies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1188Roles and responsibilities. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1189Conformance measurements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1189

xl UNIX and Linux System Administration Handbook

The structure of an IT organization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1190The foundation: the ticketing and task management system. . . . . . . . . . . 1191Common functions of ticketing systems. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1191Ticket ownership . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1192User acceptance of ticketing systems. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1192Sample ticketing systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1193Ticket dispatching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1194Skill sets within IT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1195Time management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1196

The help desk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1196Scope of services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1196Help desk availability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1196Help desk addiction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1196

The enterprise architects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1197Make processes reproducible . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1197Leave a trail of bread crumbs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1198Recognize the criticality of documentation . . . . . . . . . . . . . . . . . . . . . . . . . 1198Customize and write code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1198Keep the system clean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1198

The operations group. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1199Aim for minimal downtime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1199Document dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1199Repurpose or eliminate older hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1200Maintain local documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1200

Standardized documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1202Hardware labeling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1203Network documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1204User documentation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1204

Keep environments separate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1204Automate, automate, automate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1205

Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1206Leadership . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1206Personnel management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1207Hiring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1207Firing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1208Mechanics of personnel management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1209Quality control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1209Management without meddling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1210Community relations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1210Management of upper management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1211Purchasing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1212Conflict resolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1213

Mediation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1213Rogue users and departments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1214

Table of Contents xli

Policies and procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1215The difference between policies and procedures . . . . . . . . . . . . . . . . . . . . .1215Policy best practices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1216Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1216

Disaster recovery. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1217Risk assessment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1217Disaster management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1218Staff for a disaster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1220Power and HVAC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1220Internet connection redundancy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1221Security incidents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1222

Compliance: regulations and standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1222ITIL: the Information Technology Infrastructure Library . . . . . . . . . . . . .1225NIST: the National Institute for Standards and Technology . . . . . . . . . . .1225

Legal issues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1226Privacy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1226Policy enforcement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1227Control = liability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1228Software licenses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1228

Organizations, conferences, and other resources . . . . . . . . . . . . . . . . . . . . . . . .1229Recommended Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1231Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1231

INDEX 1233A BRIEF HISTORY OF SYSTEM ADMINISTRATION 1264IN DEFENSE OF AIX 1274COLOPHON 1277ABOUT THE CONTRIBUTORS 1278ABOUT THE AUTHORS 1279