toc
DESCRIPTION
TOCTRANSCRIPT
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