| How to Become a Hacker | p. vii |
| Preface | p. xi |
| Server Basics | p. 1 |
| Removing Unnecessary Services | p. 3 |
| Forgoing the Console Login | p. 6 |
| Common Boot Parameters | p. 7 |
| Creating a Persistent Daemon with init | p. 8 |
| n>&m: Swap Standard Output and Standard Error | p. 10 |
| Building Complex Command Lines | p. 12 |
| Working with Tricky Files in xargs | p. 15 |
| Immutable Files in ext2/ext3 | p. 17 |
| Speeding Up Compiles | p. 18 |
| At Home in Your Shell Environment | p. 19 |
| Finding and Eliminating setuid/setgid Binaries | p. 22 |
| Make sudo Work Harder | p. 25 |
| Using a Makefile to Automate Admin Tasks | p. 27 |
| Brute Forcing Your New Domain Name | p. 29 |
| Playing Hunt the Disk Hog | p. 29 |
| Fun with /proc | p. 31 |
| Manipulating Processes Symbolically with procps | p. 34 |
| Managing System Resources per Process | p. 35 |
| Cleaning Up after Ex-Users | p. 37 |
| Eliminating Unnecessary Drivers from the Kernel | p. 39 |
| Using Large Amounts of RAM | p. 42 |
| hdparm: Fine Tune IDE Drive Parameters | p. 43 |
| Revision Control | p. 46 |
| Getting Started with RCS | p. 47 |
| Checking Out a Previous Revision in RCS | p. 48 |
| Tracking Changes with rcs2log | p. 49 |
| Getting Started with CVS | p. 51 |
| CVS: Checking Out a Module | p. 54 |
| CVS: Updating Your Working Copy | p. 54 |
| CVS: Using Tags | p. 55 |
| CVS: Making Changes to a Module | p. 56 |
| CVS: Merging Files | p. 57 |
| CVS: Adding and Removing Files and Directories | p. 57 |
| CVS: Branching Development | p. 58 |
| CVS: Watching and Locking Files | p. 59 |
| CVS: Keeping CVS Secure | p. 60 |
| CVS: Anonymous Repositories | p. 61 |
| Backups | p. 63 |
| Backing Up with tar over ssh | p. 64 |
| Using rsync over ssh | p. 65 |
| Archiving with Pax | p. 66 |
| Backing Up Your Boot Sector | p. 72 |
| Keeping Parts of Filesystems in sync with rsync | p. 73 |
| Automated Snapshot-Style Incremental Backups with rsync | p. 78 |
| Working with ISOs and CDR/CDRWs | p. 84 |
| Burning a CD Without Creating an ISO File | p. 85 |
| Networking | p. 87 |
| Creating a Firewall from the Command Line of any Server | p. 87 |
| Simple IP Masquerading | p. 90 |
| iptables Tips & Tricks | p. 91 |
| Forwarding TCP Ports to Arbitrary Machines | p. 93 |
| Using Custom Chains in iptables | p. 94 |
| Tunneling: IPIP Encapsulation | p. 96 |
| Tunneling: GRE Encapsulation | p. 98 |
| Using vtun over ssh to Circumvent NAT | p. 99 |
| Automatic vtund.conf Generator | p. 105 |
| Monitoring | p. 110 |
| Steering syslog | p. 110 |
| Watching Jobs with watch | p. 113 |
| What's Holding That Port Open? | p. 114 |
| Checking On Open Files and Sockets with Isof | p. 115 |
| Monitor System Resources with top | p. 118 |
| Constant Load Average Display in the Titlebar | p. 119 |
| Network Monitoring with ngrep | p. 121 |
| Scanning Your Own Machines with nmap | p. 123 |
| Disk Age Analysis | p. 124 |
| Cheap IP Takeover | p. 126 |
| Running ntop for Real-Time Network Stats | p. 129 |
| Monitoring Web Traffic in Real Time with httptop | p. 131 |
| SSH | p. 139 |
| Quick Logins with ssh Client Keys | p. 139 |
| Turbo-mode ssh Logins | p. 141 |
| Using ssh-Agent Effectively | p. 142 |
| Running the ssh-Agent in a GUI | p. 144 |
| X over ssh | p. 145 |
| Forwarding Ports over ssh | p. 146 |
| Scripting | p. 149 |
| Get Settled in Quickly with movein.sh | p. 149 |
| Global Search and Replace with Perl | p. 151 |
| Mincing Your Data into Arbitrary Chunks (in bash) | p. 153 |
| Colorized Log Analysis in Your Terminal | p. 155 |
| Information Servers | p. 157 |
| Running BIND in a chroot Jail | p. 158 |
| Views in BIND 9 | p. 160 |
| Setting Up Caching DNS with Authority for Local Domains | p. 165 |
| Distributing Server Load with Round-Robin DNS | p. 167 |
| Running Your Own Top-Level Domain | p. 168 |
| Monitoring MySQL Health with mtop | p. 169 |
| Setting Up Replication in MySQL | p. 172 |
| Restoring a Single Table from a Large MySQL Dump | p. 175 |
| MySQL Server Tuning | p. 175 |
| Using proftpd with a mysql Authentication Source | p. 178 |
| Optimizing glibc, linuxthreads, and the Kernel for a Super MySQL Server | p. 180 |
| Apache Toolbox | p. 182 |
| Display the Full Filename in Indexes | p. 185 |
| Quick Configuration Changes with IfDefine | p. 186 |
| Simplistic Ad Referral Tracking | p. 188 |
| Mimicking FTP Servers with Apache | p. 191 |
| Rotate and compress Apache Server Logs | p. 193 |
| Generating an SSL cert and Certificate Signing Request | p. 194 |
| Creating Your Own CA | p. 196 |
| Distributing Your CA to Client Browsers | p. 198 |
| Serving multiple sites with the same DocumentRoot | p. 201 |
| Delivering Content Based on the Query String Using mod_rewrite | p. 203 |
| Using mod_proxy on Apache for Speed | p. 204 |
| Distributing Load with Apache RewriteMap | p. 206 |
| Ultrahosting: Mass Web Site Hosting with Wildcards, Proxy, and Rewrite | p. 208 |
| Index | p. 213 |
| Table of Contents provided by Syndetics. All Rights Reserved. |