You are previewing Linux® Bible 2009 Edition: Boot up Ubuntu®, Fedora®, KNOPPIX, Debian®, SUSE®, and 13 Other Distributions.
O'Reilly logo
Linux® Bible 2009 Edition: Boot up Ubuntu®, Fedora®, KNOPPIX, Debian®, SUSE®, and 13 Other Distributions

Book Description

As the ultimate resource on the basics of the Linux desktops, servers, and programming tools, this book is written by the ultimate author on all things Linux. This transition resource is ideal if you are making the move from Windows or Macintosh to using Linux as your desktop system, and explains the Linux technology, offers detailed installation instructions, and includes step-by-step descriptions of key desktop and server components. You’ll relish the in-depth descriptions that will help you choose the best Linux distribution to suit your needs.

Note: CD-ROM/DVD and other supplementary materials are not included as part of eBook file.

Table of Contents

  1. Copyright
  2. About the Author
  3. Credits
  4. Acknowledgments
  5. Introduction
    1. Understanding the Linux Mystique
    2. How This Book Is Organized
    3. What You Will Get from This Book
    4. Conventions Used in This Book
  6. I. Getting off the Ground with Linux
    1. 1. Starting with Linux
      1. 1.1. Taking Your First Step
        1. 1.1.1. What Comes in Linux Systems?
        2. 1.1.2. What Do You Need to Get Started?
        3. 1.1.3. Starting Right Now
          1. 1.1.3.1. Trying KNOPPIX
          2. 1.1.3.2. Trying Damn Small Linux
          3. 1.1.3.3. Trying Other Linux Distributions
      2. 1.2. Understanding Linux
      3. 1.3. What's So Great About Linux?
      4. 1.4. Summary
    2. 2. Linux Projects, Activities, and Careers
      1. 2.1. Making Things with Linux
        1. 2.1.1. Linux in Outer Space
        2. 2.1.2. Linux in Gadgets
        3. 2.1.3. Linux in Projects
      2. 2.2. Getting Involved with Linux
        1. 2.2.1. Joining a Linux User Group
        2. 2.2.2. Joining Linux Communities
        3. 2.2.3. Companies and Groups Supporting Linux
      3. 2.3. Keeping Up with Linux
        1. 2.3.1. Major Linux Projects
        2. 2.3.2. Exploring Linux Distributions
      4. 2.4. Linux in the Real World
        1. 2.4.1. Linux in Schools
        2. 2.4.2. Linux in Small Business
        3. 2.4.3. Linux in the Enterprise
      5. 2.5. Becoming a Linux Professional
      6. 2.6. Summary
  7. II. Running a Linux Desktop
    1. 3. Getting into the Desktop
      1. 3.1. Understanding Your Desktop
      2. 3.2. Starting the Desktop
        1. 3.2.1. Boot to the Desktop
        2. 3.2.2. Boot to a Graphical Login
        3. 3.2.3. Boot to a Text Prompt
      3. 3.3. K Desktop Environment
        1. 3.3.1. Using the KDE Desktop
        2. 3.3.2. Managing Files with the Dolphin and Konqueror
        3. 3.3.3. Using the Dolphin File Manager
          1. 3.3.3.1. Working with Files
          2. 3.3.3.2. Searching for Files
          3. 3.3.3.3. Creating New Files and Folders
        4. 3.3.4. Using the Konqueror Web Browser/File Manager
          1. 3.3.4.1. Using Bookmarking Features in Konqueror
          2. 3.3.4.2. Configuring Konqueror Options
        5. 3.3.5. Managing the KDE Desktop
          1. 3.3.5.1. Managing Windows in the Taskbar
          2. 3.3.5.2. Uncluttering the Desktop
          3. 3.3.5.3. Moving Windows
          4. 3.3.5.4. Resizing Windows
          5. 3.3.5.5. Pinning Windows on the Top or Bottom
          6. 3.3.5.6. Using Virtual Desktops
          7. 3.3.5.7. Adding Widgets
        6. 3.3.6. Configuring the Desktop
          1. 3.3.6.1. Changing Panel Attributes
      4. 3.4. The GNOME Desktop
        1. 3.4.1. Using the Metacity Window Manager
        2. 3.4.2. Using the GNOME Panels
          1. 3.4.2.1. Using the Applications and System Menus
          2. 3.4.2.2. Adding an Applet
          3. 3.4.2.3. Adding Another Panel
          4. 3.4.2.4. Adding an Application Launcher
          5. 3.4.2.5. Adding a Drawer
          6. 3.4.2.6. Changing Panel Properties
        3. 3.4.3. Using the Nautilus File Manager
        4. 3.4.4. 3D Effects with AIGLX
        5. 3.4.5. Changing GNOME Preferences
        6. 3.4.6. Exiting GNOME
      5. 3.5. Configuring a GNOME Online Desktop
      6. 3.6. Configuring Your Own Desktop
        1. 3.6.1. Configuring X
          1. 3.6.1.1. Creating a Working X Configuration File
          2. 3.6.1.2. Getting New X Drivers
          3. 3.6.1.3. Tuning Up Your X Configuration File
        2. 3.6.2. Choosing a Window Manager
        3. 3.6.3. Choosing Your Personal Window Manager
      7. 3.7. Getting More Information
      8. 3.8. Summary
    2. 4. Playing Music and Video
      1. 4.1. Playing Digital Media and Obeying the Law
        1. 4.1.1. Copyright Protection Issues
        2. 4.1.2. Exploring Codecs
      2. 4.2. Playing Music
        1. 4.2.1. Using Sound Systems in Linux
        2. 4.2.2. Adjusting Sound with PulseAudio
        3. 4.2.3. Setting Up Audio Cards
        4. 4.2.4. Choosing an Audio CD Player
          1. 4.2.4.1. Playing Music with the Rhythmbox Audio Player
          2. 4.2.4.2. Playing Music with the XMMS Multimedia Player
            1. 4.2.4.2.1. Using the Equalizer
            2. 4.2.4.2.2. Using the Playlist Editor
        5. 4.2.5. Using MIDI Audio Players
        6. 4.2.6. Performing Audio File Conversion and Compression
          1. 4.2.6.1. Converting Audio Files with SoX
          2. 4.2.6.2. Compressing Music Files with oggenc
      3. 4.3. Recording and Ripping Music
        1. 4.3.1. Creating an Audio CD with cdrecord
        2. 4.3.2. Ripping CDs with Grip
        3. 4.3.3. Creating CD Labels with cdlabelgen
      4. 4.4. Working with TV, Video, and Digital Imaging
        1. 4.4.1. Watching TV with tvtime
          1. 4.4.1.1. Getting a Supported TV Card
          2. 4.4.1.2. Running tvtime
        2. 4.4.2. Video Conferencing with Ekiga
          1. 4.4.2.1. Getting a Supported Webcam
          2. 4.4.2.2. Opening Your Firewall for Ekiga
          3. 4.4.2.3. Running Ekiga
      5. 4.5. Watching Movies and Video
        1. 4.5.1. Watching Video with xine
          1. 4.5.1.1. Using xine
          2. 4.5.1.2. Creating Playlists with Xine
          3. 4.5.1.3. Xine Tips
        2. 4.5.2. Using Totem Movie Player
      6. 4.6. Using a Digital Camera
        1. 4.6.1. Displaying Images in gThumb
        2. 4.6.2. Using Your Camera as a Storage Device
      7. 4.7. Summary
    3. 5. Working with Words and Images
      1. 5.1. Desktop Publishing in Linux
        1. 5.1.1. Using Text Editors and Notepads
        2. 5.1.2. Using Word Processors
          1. 5.1.2.1. Using the OpenOffice.org Office Suite
          2. 5.1.2.2. Other Word Processors
          3. 5.1.2.3. Using StarOffice
          4. 5.1.2.4. Using AbiWord
          5. 5.1.2.5. Using KOffice
        3. 5.1.3. Transitioning Documents from Windows
        4. 5.1.4. Converting Documents
        5. 5.1.5. Building Structured Documents
          1. 5.1.5.1. Understanding SGML and XML
          2. 5.1.5.2. Understanding DocBook
          3. 5.1.5.3. Creating DocBook Documents
          4. 5.1.5.4. Converting DocBook Documents
        6. 5.1.6. Doing Page Layout with Scribus
      2. 5.2. Working with Graphics
        1. 5.2.1. Manipulating Images with GIMP
        2. 5.2.2. Creating Vector Graphic Images with Inkscape
        3. 5.2.3. Acquiring Screen Captures
        4. 5.2.4. Viewing Images
      3. 5.3. Displaying PDF and PostScript Documents
        1. 5.3.1. Using the ghostscript and ggv Commands
        2. 5.3.2. Using Adobe Reader
      4. 5.4. Using Scanners with SANE
      5. 5.5. Web Publishing
      6. 5.6. Summary
    4. 6. E-Mailing and Web Browsing
      1. 6.1. Using E-Mail
        1. 6.1.1. Choosing an E-Mail Client
        2. 6.1.2. Getting Here from Windows
        3. 6.1.3. Getting Started with E-Mail
        4. 6.1.4. Tuning Up E-Mail
        5. 6.1.5. Reading E-Mail with Thunderbird
          1. 6.1.5.1. Setting Up an E-Mail Account
          2. 6.1.5.2. Connecting to the Mail Server
          3. 6.1.5.3. Managing Incoming Mail
          4. 6.1.5.4. Composing and Sending Mail
          5. 6.1.5.5. Filtering Mail and Catching Spam
        6. 6.1.6. Managing E-Mail in Evolution
          1. 6.1.6.1. Receiving, Composing, and Sending E-Mail
          2. 6.1.6.2. Managing E-Mail with Search Folders
          3. 6.1.6.3. Filtering E-Mail Messages
        7. 6.1.7. Reading E-Mail with SeaMonkey Mail
        8. 6.1.8. Working with Text-Based E-Mail Readers
          1. 6.1.8.1. Mutt Mail Reader
          2. 6.1.8.2. Pine Mail Reader
          3. 6.1.8.3. Mail Reader
      2. 6.2. Choosing a Web Browser
      3. 6.3. Exploring the SeaMonkey Suite
      4. 6.4. Using Firefox
        1. 6.4.1. Setting Up Firefox
          1. 6.4.1.1. Setting Firefox Preferences
          2. 6.4.1.2. Adding Add-ons and Plug-ins
          3. 6.4.1.3. Changing Firefox Themes
        2. 6.4.2. Securing Firefox
        3. 6.4.3. Tips for Using Firefox
        4. 6.4.4. Using Firefox Controls
        5. 6.4.5. Improving Firefox Browsing
        6. 6.4.6. Doing Cool Things with Firefox
          1. 6.4.6.1. Blocking Pop-ups
          2. 6.4.6.2. Using Tabbed Browsing
          3. 6.4.6.3. Resizing Web Page Text
      5. 6.5. Using Text-Based Web Browsers
      6. 6.6. Summary
    5. 7. Gaming with Linux
      1. 7.1. Jumping into Linux Gaming
      2. 7.2. Overview of Linux Gaming
      3. 7.3. Basic Linux Gaming Information
      4. 7.4. Choosing Gaming Hardware for Linux
        1. 7.4.1. Binary-Only Video Card Drivers
          1. 7.4.1.1. Open Source Video Drivers
      5. 7.5. Running Open Source Linux Games
        1. 7.5.1. GNOME Games
        2. 7.5.2. KDE Games
        3. 7.5.3. Games in Fedora
          1. 7.5.3.1. Freeciv
            1. 7.5.3.1.1. Beginning with Freeciv
            2. 7.5.3.1.2. Building Your Civilization
            3. 7.5.3.1.3. Exploring Your World
            4. 7.5.3.1.4. Using More Controls and Actions
          2. 7.5.3.2. Extreme Tux Racer
      6. 7.6. Commercial Linux Games
        1. 7.6.1. Getting Started with Commercial Games in Linux
        2. 7.6.2. Playing Commercial Linux Games
        3. 7.6.3. id Software Games
          1. 7.6.3.1. Quake III Arena
          2. 7.6.3.2. Return to Castle Wolfenstein
        4. 7.6.4. Playing TransGaming and Cedega Games
        5. 7.6.5. Loki Software Game Demos
          1. 7.6.5.1. Civilization: Call to Power
          2. 7.6.5.2. Myth II: Soulblighter
          3. 7.6.5.3. Heretic II
          4. 7.6.5.4. Neverwinter Nights
      7. 7.7. Summary
  8. III. Learning System Administration Skills
    1. 8. Installing Linux
      1. 8.1. Choosing a Linux Distribution
        1. 8.1.1. Linux at Work
        2. 8.1.2. Other Distributions
      2. 8.2. Getting Your Own Linux Distribution
        1. 8.2.1. Finding Another Linux Distribution
        2. 8.2.2. Understanding What You Need
        3. 8.2.3. Downloading the Distribution
        4. 8.2.4. Burning the Distribution to CD
      3. 8.3. Exploring Common Installation Topics
        1. 8.3.1. Knowing Your Computer Hardware
        2. 8.3.2. Upgrading or Installing from Scratch
        3. 8.3.3. Dual Booting with Windows or Just Linux?
        4. 8.3.4. Using Installation Boot Options
        5. 8.3.5. Partitioning Hard Drives
          1. 8.3.5.1. Partitioning During Fedora Installation
            1. 8.3.5.1.1. Reasons for Partitioning
            2. 8.3.5.1.2. Deleting, Adding, and Editing Partitions
          2. 8.3.5.2. Partitioning with fdisk
          3. 8.3.5.3. Tips for Creating Partitions
        6. 8.3.6. Using LILO or GRUB Boot Loaders
          1. 8.3.6.1. Booting Your Computer with GRUB
          2. 8.3.6.2. Booting with GRUB
          3. 8.3.6.3. Temporarily Changing Boot Options
          4. 8.3.6.4. Permanently Changing Boot Options
          5. 8.3.6.5. Adding a New GRUB Boot Image
          6. 8.3.6.6. Booting Your Computer with LILO
            1. 8.3.6.6.1. Using LILO
            2. 8.3.6.6.2. Setting Up the /etc/lilo.conf File
          7. 8.3.6.7. Changing Your Boot Loader
        7. 8.3.7. Configuring Networking
        8. 8.3.8. Configuring Other Administrative Features
      4. 8.4. Installing from the Linux Bible CD or DVD
      5. 8.5. Summary
    2. 9. Running Commands from the Shell
      1. 9.1. Starting a Shell
        1. 9.1.1. Using the Shell Prompt
        2. 9.1.2. Using a Terminal Window
        3. 9.1.3. Using Virtual Terminals
      2. 9.2. Choosing Your Shell
        1. 9.2.1. Using bash (and Earlier sh) Shells
        2. 9.2.2. Using tcsh (and Earlier csh) Shells
        3. 9.2.3. Using ash
        4. 9.2.4. Using ksh
        5. 9.2.5. Using zsh
      3. 9.3. Exploring the Shell
        1. 9.3.1. Checking Your Login Session
        2. 9.3.2. Checking Directories and Permissions
        3. 9.3.3. Checking System Activity
        4. 9.3.4. Exiting the Shell
      4. 9.4. Using the Shell in Linux
        1. 9.4.1. Locating Commands
        2. 9.4.2. Rerunning Commands
          1. 9.4.2.1. Command-Line Editing
          2. 9.4.2.2. Command-Line Completion
          3. 9.4.2.3. Command-Line Recall
        3. 9.4.3. Connecting and Expanding Commands
          1. 9.4.3.1. Piping Commands
          2. 9.4.3.2. Sequential Commands
          3. 9.4.3.3. Background Commands
          4. 9.4.3.4. Expanding Commands
          5. 9.4.3.5. Expanding Arithmetic Expressions
          6. 9.4.3.6. Expanding Environment Variables
      5. 9.5. Creating Your Shell Environment
        1. 9.5.1. Configuring Your Shell
          1. 9.5.1.1. Setting Your Prompt
          2. 9.5.1.2. Adding Environment Variables
          3. 9.5.1.3. Adding Aliases
        2. 9.5.2. Using Shell Environment Variables
          1. 9.5.2.1. Common Shell Environment Variables
          2. 9.5.2.2. Setting Your Own Environment Variables
        3. 9.5.3. Managing Background and Foreground Processes
          1. 9.5.3.1. Starting Background Processes
          2. 9.5.3.2. Using Foreground and Background Commands
      6. 9.6. Working with the Linux File System
        1. 9.6.1. Creating Files and Directories
          1. 9.6.1.1. Using Metacharacters and Operators
          2. 9.6.1.2. Using File-Matching Metacharacters
          3. 9.6.1.3. Using File-Redirection Metacharacters
          4. 9.6.1.4. Understanding File Permissions
        2. 9.6.2. Moving, Copying, and Deleting Files
      7. 9.7. Using the vi Text Editor
        1. 9.7.1. Starting with vi
        2. 9.7.2. Moving Around the File
        3. 9.7.3. Searching for Text
        4. 9.7.4. Using Numbers with Commands
      8. 9.8. Summary
    3. 10. Learning Basic Administration
      1. 10.1. Graphical Administration Tools
        1. 10.1.1. Using Web-Based Administration
          1. 10.1.1.1. Open Source Projects Offering Web Administration
          2. 10.1.1.2. The Webmin Administration Tool
        2. 10.1.2. Graphical Administration with Different Distributions
          1. 10.1.2.1. Fedora/RHEL Config Tools
          2. 10.1.2.2. SUSE YaST Tools
      2. 10.2. Using the root Login
        1. 10.2.1. Becoming Root from the Shell (su Command)
        2. 10.2.2. Allowing Limited Administrative Access
      3. 10.3. Exploring Administrative Commands, Configuration Files, and Log Files
        1. 10.3.1. Administrative Commands
        2. 10.3.2. Administrative Configuration Files
        3. 10.3.3. Administrative Log Files
      4. 10.4. Using sudo and Other Administrative Logins
      5. 10.5. Administering Your Linux System
      6. 10.6. Creating User Accounts
        1. 10.6.1. Adding Users with useradd
        2. 10.6.2. Setting User Defaults
        3. 10.6.3. Modifying Users with usermod
        4. 10.6.4. Deleting Users with userdel
      7. 10.7. Configuring Hardware
        1. 10.7.1. Managing Removable Hardware
          1. 10.7.1.1. Removable Media on a GNOME Desktop
          2. 10.7.1.2. Removable Media on a SUSE KDE Desktop
        2. 10.7.2. Working with Loadable Modules
          1. 10.7.2.1. Listing Loaded Modules
          2. 10.7.2.2. Loading Modules
          3. 10.7.2.3. Removing Modules
      8. 10.8. Managing File Systems and Disk Space
        1. 10.8.1. Mounting File Systems
          1. 10.8.1.1. Supported File Systems
          2. 10.8.1.2. Using the fstab File to Define Mountable File Systems
          3. 10.8.1.3. Using the mount Command to Mount File Systems
            1. 10.8.1.3.1. Mounting Removable Media
            2. 10.8.1.3.2. Mounting a Disk Image in Loopback
          4. 10.8.1.4. Using the umount Command
        2. 10.8.2. Using the mkfs Command to Create a File System
        3. 10.8.3. Adding a Hard Disk
        4. 10.8.4. Checking System Space
          1. 10.8.4.1. Displaying System Space with df
          2. 10.8.4.2. Checking Disk Usage with du
          3. 10.8.4.3. Finding Disk Consumption with find
      9. 10.9. Monitoring System Performance
      10. 10.10. Summary
    4. 11. Getting on the Internet
      1. 11.1. Connecting to the Network
        1. 11.1.1. Connecting via Dial-Up Service
        2. 11.1.2. Connecting a Single Computer to Broadband
        3. 11.1.3. Connecting Multiple Computers to Broadband
        4. 11.1.4. Connecting Servers
        5. 11.1.5. Connecting Other Equipment
      2. 11.2. Using Ethernet Connections to the Internet
        1. 11.2.1. Configuring Ethernet During Installation
        2. 11.2.2. Configuring Ethernet from the Desktop
        3. 11.2.3. Using Network Configuration GUI in Fedora
        4. 11.2.4. Identifying Other Computers (Hosts and DNS)
        5. 11.2.5. Using the Network Settings GUI in Ubuntu
        6. 11.2.6. Understanding Your Internet Connection
      3. 11.3. Using Dial-Up Connections to the Internet
        1. 11.3.1. Getting Information
        2. 11.3.2. Setting Up Dial-Up PPP
        3. 11.3.3. Creating a Dial-Up Connection with the Internet Configuration Wizard
        4. 11.3.4. Launching Your PPP Connection
        5. 11.3.5. Launching Your PPP Connection on Demand
        6. 11.3.6. Checking Your PPP Connection
        7. 11.3.7. Checking That Your Modem Was Detected
      4. 11.4. Connecting to the Internet with Wireless
      5. 11.5. Summary
    5. 12. Securing Linux
      1. 12.1. Linux Security Checklist
        1. 12.1.1. Finding Distribution-Specific Security Resources
        2. 12.1.2. Finding General Security Resources
      2. 12.2. Using Linux Securely
        1. 12.2.1. Using Password Protection
        2. 12.2.2. Choosing Good Passwords
        3. 12.2.3. Using a Shadow Password File
          1. 12.2.3.1. Breaking Encrypted Passwords
          2. 12.2.3.2. Checking for the Shadow Password File
      3. 12.3. Using Log Files
        1. 12.3.1. The Role of syslogd
        2. 12.3.2. Redirecting Logs to a Loghost with syslogd
        3. 12.3.3. Understanding the messages Log File
      4. 12.4. Using Secure Shell Tools
        1. 12.4.1. Starting the SSH Service
        2. 12.4.2. Using the ssh, sftp, and scp Commands
        3. 12.4.3. Using ssh, scp, and sftp without Passwords
      5. 12.5. Securing Linux Servers
        1. 12.5.1. Controlling Access to Services with TCP Wrappers
        2. 12.5.2. Understanding Attack Techniques
        3. 12.5.3. Protecting Against Denial-of-Service Attacks
          1. 12.5.3.1. Mailbombing
            1. 12.5.3.1.1. Blocking Mail with Procmail
            2. 12.5.3.1.2. Blocking Mail with sendmail
          2. 12.5.3.2. Spam Relaying
          3. 12.5.3.3. Smurf Amplification Attack
        4. 12.5.4. Protecting Against Distributed DoS Attacks
        5. 12.5.5. Protecting Against Intrusion Attacks
          1. 12.5.5.1. Evaluating Access to Network Services
          2. 12.5.5.2. Disabling Network Services
        6. 12.5.6. Securing Servers with SELinux
        7. 12.5.7. Protecting Web Servers with Certificates and Encryption
          1. 12.5.7.1. Symmetric Cryptography
          2. 12.5.7.2. Asymmetric Cryptography
          3. 12.5.7.3. Secure Sockets Layer
            1. 12.5.7.3.1. Creating SSL Certificates
            2. 12.5.7.3.2. Using Third-Party Certificate Signers
            3. 12.5.7.3.3. Creating a Certificate Service Request
            4. 12.5.7.3.4. Getting Your CSR Signed
            5. 12.5.7.3.5. Creating Self-Signed Certificates
            6. 12.5.7.3.6. Restarting Your Web Server
            7. 12.5.7.3.7. Troubleshooting Your Certificates
      6. 12.6. Using Linux Live CD Security Tools
        1. 12.6.1. Advantages of Security Live CDs
        2. 12.6.2. Using INSERT to Check for Rootkits
      7. 12.7. Summary
  9. IV. Setting Up Linux Servers
    1. 13. Running a Linux, Apache, MySQL, and PHP (LAMP) Server
      1. 13.1. Components of a LAMP Server
        1. 13.1.1. Apache
        2. 13.1.2. MySQL
        3. 13.1.3. PHP
      2. 13.2. Setting Up Your LAMP Server
        1. 13.2.1. Installing Apache
        2. 13.2.2. Installing PHP
        3. 13.2.3. Installing MySQL
      3. 13.3. Operating Your LAMP Server
        1. 13.3.1. Editing Your Apache Configuration Files
        2. 13.3.2. Adding a Virtual Host to Apache
        3. 13.3.3. User Content and the userdir Setting
        4. 13.3.4. Installing a Web Application: Coppermine Photo Gallery
      4. 13.4. Troubleshooting
        1. 13.4.1. Configuration Errors
        2. 13.4.2. Access Forbidden and Server Internal Errors
      5. 13.5. Securing Your Web Traffic with SSL/TLS
        1. 13.5.1. Generating Your Keys
        2. 13.5.2. Configuring Apache to Support SSL/TLS
      6. 13.6. Summary
    2. 14. Running a Mail Server
      1. 14.1. Internet E-Mail's Inner Workings
      2. 14.2. About the System and the Software Used
      3. 14.3. Preparing Your System
        1. 14.3.1. Configuring DNS for Direct Delivery
        2. 14.3.2. Configuring for Retrieval from a Mail Host
      4. 14.4. Installing and Configuring the Mail Server Software
        1. 14.4.1. Installing Exim and Courier
        2. 14.4.2. Installing ClamAV and SpamAssassin
      5. 14.5. Testing and Troubleshooting
        1. 14.5.1. Checking Logs
        2. 14.5.2. Common Errors (and How to Fix Them)
          1. 14.5.2.1. Messages Rejected by Exim
          2. 14.5.2.2. Messages Not Delivered by Exim
          3. 14.5.2.3. Login Failures When Connecting to Courier
      6. 14.6. Configuring Mail Clients
        1. 14.6.1. Configuring Fetchmail
        2. 14.6.2. Configuring Web-Based Mail
      7. 14.7. Securing Communications with SSL/TLS
      8. 14.8. Summary
    3. 15. Running a Print Server
      1. 15.1. Common UNIX Printing Service
      2. 15.2. Setting Up Printers
        1. 15.2.1. Using Web-Based CUPS Administration
        2. 15.2.2. Using the Printer Configuration Window
          1. 15.2.2.1. Configuring Local Printers with the Printer Configuration Window
            1. 15.2.2.1.1. Adding a Local Printer
            2. 15.2.2.1.2. Editing a Local Printer
          2. 15.2.2.2. Configuring Remote Printers
          3. 15.2.2.3. Adding a Remote CUPS Printer
          4. 15.2.2.4. Adding a Remote UNIX Printer
          5. 15.2.2.5. Adding a Windows (SMB) Printer
      3. 15.3. Working with CUPS Printing
        1. 15.3.1. Configuring the CUPS Server (cupsd.conf)
        2. 15.3.2. Starting the CUPS Server
        3. 15.3.3. Configuring CUPS Printer Options Manually
      4. 15.4. Using Printing Commands
        1. 15.4.1. Printing with lpr
        2. 15.4.2. Listing Printer Status with lpc
        3. 15.4.3. Removing Print Jobs with lprm
      5. 15.5. Configuring Print Servers
        1. 15.5.1. Configuring a Shared CUPS Printer
        2. 15.5.2. Configuring a Shared Samba Printer
          1. 15.5.2.1. Understanding smb.conf for Printing
          2. 15.5.2.2. Setting Up SMB Clients
      6. 15.6. Summary
    4. 16. Running a File Server
      1. 16.1. Setting Up an NFS File Server
        1. 16.1.1. Getting NFS
        2. 16.1.2. Sharing NFS File Systems
          1. 16.1.2.1. Configuring the /etc/exports File
            1. 16.1.2.1.1. Hostnames in /etc/exports
            2. 16.1.2.1.2. Access Options in /etc/exports
            3. 16.1.2.1.3. User Mapping Options in /etc/exports
          2. 16.1.2.2. Exporting the Shared File Systems
          3. 16.1.2.3. Starting the NFS Daemons
        3. 16.1.3. Using NFS File Systems
          1. 16.1.3.1. Manually Mounting an NFS File System
          2. 16.1.3.2. Automatically Mounting an NFS File System
            1. 16.1.3.2.1. Mounting noauto File Systems
            2. 16.1.3.2.2. Using mount Options
          3. 16.1.3.3. Using autofs to Mount NFS File Systems on Demand
        4. 16.1.4. Unmounting NFS File Systems
        5. 16.1.5. Other Cool Things to Do with NFS
      2. 16.2. Setting Up a Samba File Server
        1. 16.2.1. Getting and Installing Samba
        2. 16.2.2. Configuring Samba with SWAT
          1. 16.2.2.1. Turning on the SWAT Service
          2. 16.2.2.2. Starting with SWAT
          3. 16.2.2.3. Creating Global Samba Settings in SWAT
            1. 16.2.2.3.1. Base Options
            2. 16.2.2.3.2. Security Options
            3. 16.2.2.3.3. Logging Options
            4. 16.2.2.3.4. Printing Options
            5. 16.2.2.3.5. Browse Options
            6. 16.2.2.3.6. WINS Options
          4. 16.2.2.4. Configuring Shared Directories with SWAT
          5. 16.2.2.5. Checking Your Samba Setup with SWAT
        3. 16.2.3. Working with Samba Files and Commands
          1. 16.2.3.1. Editing the smb.conf File
          2. 16.2.3.2. Adding Samba Users
          3. 16.2.3.3. Starting the Samba Service
          4. 16.2.3.4. Testing Your Samba Permissions
          5. 16.2.3.5. Checking the Status of Shared Directories
        4. 16.2.4. Using Samba Shared Directories
          1. 16.2.4.1. Using Samba from Nautilus
          2. 16.2.4.2. Mounting Samba Directories in Linux
        5. 16.2.5. Troubleshooting Your Samba Server
          1. 16.2.5.1. Basic Networking in Place?
          2. 16.2.5.2. Samba Service Running?
          3. 16.2.5.3. Firewall Open?
          4. 16.2.5.4. User Passwords Working?
      3. 16.3. Summary
  10. V. Choosing and Installing Different Linux Distributions
    1. 17. Running Ubuntu Linux
      1. 17.1. Overview of Ubuntu
        1. 17.1.1. Ubuntu Releases
        2. 17.1.2. Ubuntu Installer
        3. 17.1.3. Ubuntu as a Desktop
        4. 17.1.4. Ubuntu as a Server
        5. 17.1.5. Ubuntu Spin-Offs
        6. 17.1.6. Challenges Facing Ubuntu
      2. 17.2. Installing Ubuntu
      3. 17.3. Starting with Ubuntu
        1. 17.3.1. Trying Out the Desktop
        2. 17.3.2. Adding More Software
      4. 17.4. Getting More Information about Ubuntu
      5. 17.5. Summary
    2. 18. Running Fedora and Red Hat Enterprise Linux
      1. 18.1. Digging into Features
        1. 18.1.1. Red Hat Installer (Anaconda)
        2. 18.1.2. Custom Spins, Install Sets, and Live CDs
        3. 18.1.3. RPM Package Management
        4. 18.1.4. Latest Desktop Technology
        5. 18.1.5. System Configuration Tools
      2. 18.2. Going Forward with Fedora
        1. 18.2.1. Growing Community Support for Fedora
        2. 18.2.2. Joining Fedora Special Interest Groups
        3. 18.2.3. Forums and Mailing Lists
      3. 18.3. Fedora Comes of Age
      4. 18.4. Installing Fedora
        1. 18.4.1. Choosing Computer Hardware
        2. 18.4.2. Choosing an Installation Method
          1. 18.4.2.1. Installing on Multiple Computers
          2. 18.4.2.2. Installation Guides
        3. 18.4.3. Choosing to Install or Upgrade
        4. 18.4.4. Beginning the Installation
        5. 18.4.5. Running the Fedora Firstboot
        6. 18.4.6. Adding Cool Stuff to Your Fedora Desktop
      5. 18.5. Summary
    3. 19. Running Debian GNU/Linux
      1. 19.1. Inside Debian GNU/Linux
        1. 19.1.1. Debian Packages
        2. 19.1.2. Debian Package Management Tools
        3. 19.1.3. Debian Releases
      2. 19.2. Getting Help with Debian
      3. 19.3. Installing Debian GNU/Linux
        1. 19.3.1. Hardware Requirements and Installation Planning
          1. 19.3.1.1. Workstations
          2. 19.3.1.2. Servers
        2. 19.3.2. Running the Installer
      4. 19.4. Managing Your Debian System
        1. 19.4.1. Configuring Network Connections
          1. 19.4.1.1. IP Networks: Ethernet and Wireless
          2. 19.4.1.2. Dial-Up PPP Connections
          3. 19.4.1.3. PPPoE Connections
        2. 19.4.2. Package Management Using APT
          1. 19.4.2.1. Managing the List of Package Repositories
          2. 19.4.2.2. Updating the APT Package Database
          3. 19.4.2.3. Finding and Installing Packages
          4. 19.4.2.4. Removing Packages
          5. 19.4.2.5. Upgrading Your System
        3. 19.4.3. Package Management Using dpkg
          1. 19.4.3.1. Installing and Removing Packages
          2. 19.4.3.2. Querying the Package Database
          3. 19.4.3.3. Examining a Package File
        4. 19.4.4. Installing Package Sets (Tasks) with tasksel
        5. 19.4.5. Alternatives, Diversions, and Stat Overrides
        6. 19.4.6. Managing Package Configuration with debconf
      5. 19.5. Summary
    4. 20. Running SUSE and openSUSE Linux
      1. 20.1. Understanding SUSE Linux Enterprise and openSUSE
      2. 20.2. What's in SUSE Distributions
        1. 20.2.1. Installation and Configuration with YaST
        2. 20.2.2. RPM Package Management
        3. 20.2.3. Automated Software Updates
        4. 20.2.4. Managing Software with zypper
      3. 20.3. Getting Support for SUSE Linux Enterprise and openSUSE
      4. 20.4. Installing openSUSE
        1. 20.4.1. Before You Begin
        2. 20.4.2. Starting Installation
      5. 20.5. Starting with openSUSE
      6. 20.6. Summary
    5. 21. Running KNOPPIX
      1. 21.1. KNOPPIX Features
      2. 21.2. Understanding KNOPPIX
        1. 21.2.1. Looking Inside KNOPPIX
        2. 21.2.2. What's Cool About KNOPPIX
        3. 21.2.3. Examining Challenges with KNOPPIX
        4. 21.2.4. Seeing Where KNOPPIX Comes From
        5. 21.2.5. Exploring Uses for KNOPPIX
      3. 21.3. Starting KNOPPIX
        1. 21.3.1. Getting a Computer
        2. 21.3.2. Booting KNOPPIX
        3. 21.3.3. Correcting Boot Problems
        4. 21.3.4. Customizing KNOPPIX
        5. 21.3.5. Special Features and Workarounds
      4. 21.4. Using KNOPPIX
        1. 21.4.1. Getting on the Network
        2. 21.4.2. Installing Software in KNOPPIX
        3. 21.4.3. Saving Files in KNOPPIX
          1. 21.4.3.1. Writing to Hard Disk
            1. 21.4.3.1.1. Mounting Linux Partitions for Writing
            2. 21.4.3.1.2. Mounting Windows Partitions for Writing
          2. 21.4.3.2. Creating a Persistent Home Directory
        4. 21.4.4. Keeping Your KNOPPIX Configuration
        5. 21.4.5. Restarting KNOPPIX
      5. 21.5. Summary
    6. 22. Running Yellow Dog Linux
      1. 22.1. Understanding Yellow Dog Linux
      2. 22.2. Going Forward with Yellow Dog
      3. 22.3. Digging into Yellow Dog
      4. 22.4. Installing Yellow Dog Linux
        1. 22.4.1. Hardware Support
        2. 22.4.2. Installing Yellow Dog Linux on a PowerStation
      5. 22.5. Updating Yellow Dog Linux
      6. 22.6. Running Mac Applications with Mac-on-Linux
      7. 22.7. Support Options
      8. 22.8. Summary
    7. 23. Running Gentoo Linux
      1. 23.1. Understanding Gentoo
        1. 23.1.1. Gentoo's Open Source Spirit
        2. 23.1.2. The Gentoo Community
        3. 23.1.3. Building, Tuning, and Tweaking Linux
        4. 23.1.4. Where Gentoo Is Used
      2. 23.2. What's in Gentoo
        1. 23.2.1. Managing Software with Portage
        2. 23.2.2. Finding Software Packages
        3. 23.2.3. New Gentoo Features
      3. 23.3. Installing Gentoo
        1. 23.3.1. Getting Gentoo
          1. 23.3.1.1. Live CD Install
          2. 23.3.1.2. Minimal/Universal Install CD
        2. 23.3.2. Starting Gentoo Installation from a Live CD
        3. 23.3.3. Starting Gentoo Installation from a Minimal CD
        4. 23.3.4. Getting Software with emerge
      4. 23.4. Summary
    8. 24. Running Slackware Linux
      1. 24.1. Getting into Slackware
      2. 24.2. Characterizing the Slackware Community
        1. 24.2.1. The Slackware Creator
        2. 24.2.2. Slackware Users
        3. 24.2.3. Slackware Internet Sites
      3. 24.3. Challenges of Using Slackware
      4. 24.4. Using Slackware as a Development Platform
      5. 24.5. Installing Slackware
        1. 24.5.1. Getting Slackware
        2. 24.5.2. New Features in Slackware 12.1
        3. 24.5.3. Hardware Requirements
        4. 24.5.4. Starting Installation
      6. 24.6. Starting with Slackware
      7. 24.7. Summary
    9. 25. Running Freespire and Xandros
      1. 25.1. Understanding Freespire
        1. 25.1.1. Freespire's Roots in Linspire
          1. 25.1.1.1. Legal Disputes with Microsoft
          2. 25.1.1.2. Launching Freespire
          3. 25.1.1.3. Using Freespire
        2. 25.1.2. Installing Software with Click-N-Run
        3. 25.1.3. Freespire Support
      2. 25.2. Installing Freespire
        1. 25.2.1. Hardware Requirements
        2. 25.2.2. Trying Out Freespire
        3. 25.2.3. Starting a Freespire Install
      3. 25.3. Summary
    10. 26. Running Mandriva
      1. 26.1. Mandriva Features
      2. 26.2. Exploring Mandriva
        1. 26.2.1. Mandriva Installer (DrakX)
        2. 26.2.2. RPM Package Management with RPMDrake
        3. 26.2.3. Mandriva Linux Control Center
      3. 26.3. The Mandriva Community
        1. 26.3.1. RPM Repository on Mandriva Club
        2. 26.3.2. Mandriva Forums
      4. 26.4. Installing Mandriva Limited Edition
        1. 26.4.1. The Right Hardware for Mandriva
        2. 26.4.2. Installing Mandriva with the DrakX Installer
      5. 26.5. Summary
    11. 27. Running a Linux Firewall/Router
      1. 27.1. Understanding Firewalls
      2. 27.2. Protecting Desktops with Firewalls
        1. 27.2.1. Starting Your Firewall in Fedora
        2. 27.2.2. Configuring a Firewall in Mandriva
      3. 27.3. Using Firewalls with iptables
        1. 27.3.1. Starting with iptables
          1. 27.3.1.1. Setting Some Rules
          2. 27.3.1.2. Saving Firewall Settings
          3. 27.3.1.3. Checking Your Firewall
        2. 27.3.2. Using iptables to Do SNAT or IP Masquerading
        3. 27.3.3. Adding Modules with iptables
        4. 27.3.4. Using iptables as a Transparent Proxy
        5. 27.3.5. Using iptables for Port Forwarding
          1. 27.3.5.1. Getting iptables Scripts
          2. 27.3.5.2. Finding Out More About iptables
      4. 27.4. Making a Coyote Linux Bootable Floppy Firewall
        1. 27.4.1. Creating a Coyote Linux Firewall
        2. 27.4.2. Building the Coyote Linux Floppy
        3. 27.4.3. Running the Coyote Linux Floppy Firewall
        4. 27.4.4. Managing the Coyote Linux Floppy Firewall
          1. 27.4.4.1. Using a Web Interface
          2. 27.4.4.2. Using a Remote Login
      5. 27.5. Using Other Firewall Distributions
      6. 27.6. Summary
    12. 28. Running Bootable Linux Distributions
      1. 28.1. Overview of Bootable Linux Distributions
      2. 28.2. Trying a Bootable Linux
        1. 28.2.1. Showcasing Linux from a live CD
        2. 28.2.2. Security and Rescue Bootables
          1. 28.2.2.1. BackTrack Network Security Suite
          2. 28.2.2.2. SystemRescueCd
          3. 28.2.2.3. KNOPPIX Security Tools Distribution
          4. 28.2.2.4. The Inside Security Rescue Toolkit
        3. 28.2.3. Demonstration Bootables
        4. 28.2.4. Multimedia Bootables
          1. 28.2.4.1. MoviX
          2. 28.2.4.2. GeeXboX
          3. 28.2.4.3. KnoppMyth
          4. 28.2.4.4. Dyne:bolic
        5. 28.2.5. Tiny Desktops
          1. 28.2.5.1. Damn Small Linux
          2. 28.2.5.2. Puppy Linux
      3. 28.3. Special-Purpose Bootables
      4. 28.4. Customizing a Bootable Linux
        1. 28.4.1. Building a Live CD with Fedora
      5. 28.5. Summary
  11. VI. Programming in Linux
    1. 29. Programming Environments and Interfaces
      1. 29.1. Understanding Programming Environments
      2. 29.2. Using Linux Programming Environments
        1. 29.2.1. The Linux Development Environment
          1. 29.2.1.1. The Process Model
          2. 29.2.1.2. CPU and Memory Protection
          3. 29.2.1.3. The Security Model
          4. 29.2.1.4. Preemptive Multitasking
          5. 29.2.1.5. Multiuser by Design
          6. 29.2.1.6. Interprocess Communication
          7. 29.2.1.7. The Building Blocks Philosophy
        2. 29.2.2. Graphical Programming Environments
          1. 29.2.2.1. Eclipse: The Universal Tool Platform
          2. 29.2.2.2. KDevelop: KDE's IDE
          3. 29.2.2.3. Anjuta: An IDE for GTK/GNOME
          4. 29.2.2.4. Code Crusader
        3. 29.2.3. The Command-Line Programming Environment
      3. 29.3. Linux Programming Interfaces
        1. 29.3.1. Creating Command-Line Interfaces
          1. 29.3.1.1. Creating Text-Mode User Interfaces with ncurses
          2. 29.3.1.2. Creating Text-Mode User Interfaces with S-Lang
        2. 29.3.2. Creating Graphical Interfaces
        3. 29.3.3. Application Programming Interfaces
      4. 29.4. Summary
    2. 30. Programming Tools and Utilities
      1. 30.1. The Well-Stocked Toolkit
      2. 30.2. Using the GCC Compiler
        1. 30.2.1. Compiling Multiple Source Code Files
        2. 30.2.2. GCC Command-Line Options
      3. 30.3. Automating Builds with make
      4. 30.4. Library Utilities
        1. 30.4.1. The nm Command
        2. 30.4.2. The ar Command
        3. 30.4.3. The ldd Command
        4. 30.4.4. The ldconfig Command
        5. 30.4.5. Environment Variables and Configuration Files
      5. 30.5. Source Code Control
        1. 30.5.1. Source Code Control Using RCS
          1. 30.5.1.1. Checking Files In and Out
          2. 30.5.1.2. Making Changes to Repository Files
          3. 30.5.1.3. Additional Command-Line Options
        2. 30.5.2. Source Code Control with CVS
      6. 30.6. Debugging with GNU Debugger
        1. 30.6.1. Starting GDB
        2. 30.6.2. Inspecting Code in the Debugger
        3. 30.6.3. Examining Data
        4. 30.6.4. Setting Breakpoints
        5. 30.6.5. Working with Source Code
      7. 30.7. Summary
    3. A. Media
      1. A.1. Finding Linux Distributions on the DVD
        1. A.1.1. Fedora Linux
        2. A.1.2. KNOPPIX Linux
        3. A.1.3. Slackware Linux
        4. A.1.4. Ubuntu Linux
        5. A.1.5. Mandriva Linux
        6. A.1.6. MEPIS Linux
        7. A.1.7. AntiX Linux
        8. A.1.8. BackTrack 3 Linux Security Suite
        9. A.1.9. Gentoo Linux
        10. A.1.10. Freespire 2.0.8
        11. A.1.11. openSUSE Linux
        12. A.1.12. Puppy Linux
      2. A.2. Finding Linux Distributions on the CD
        1. A.2.1. Debian GNU/Linux
        2. A.2.2. Damn Small Linux
        3. A.2.3. Inside Security Rescue Toolkit
        4. A.2.4. SystemRescueCd
        5. A.2.5. Coyote Linux
        6. A.2.6. SLAX
      3. A.3. Linux Distributions Not on the DVD or CD
      4. A.4. Creating Linux CDs
      5. A.5. Getting Source Code
    4. B. Linux History and Background
      1. B.1. Exploring Linux History
        1. B.1.1. From a Free-Flowing UNIX Culture at Bell Labs
        2. B.1.2. To a Commercialized UNIX
          1. B.1.2.1. BSD Arrives
          2. B.1.2.2. UNIX Laboratory and Commercialization
        3. B.1.3. To a GNU Free-Flowing (not) UNIX
        4. B.1.4. BSD Loses Some Steam
        5. B.1.5. Linus Builds the Missing Piece
        6. B.1.6. OSI Open Source Definition
      2. B.2. Linux Myths, Legends, and FUD
        1. B.2.1. Can You Stop Worrying About Viruses?
        2. B.2.2. Will You Be Sued for Using Linux?
          1. B.2.2.1. Microsoft Versus Linux
          2. B.2.2.2. The SCO Lawsuits
          3. B.2.2.3. Software Patents
          4. B.2.2.4. Other Potentially Litigious Issues
        3. B.2.3. Can Linux Really Run on Everything from Handhelds to Supercomputers?
        4. B.2.4. Will Microsoft Crush Linux?
        5. B.2.5. Are You on Your Own If You Use Linux?
        6. B.2.6. Is Linux Only for Geeks?
        7. B.2.7. How Do Companies Make Money with Linux?
        8. B.2.8. How Different Are Linux Distributions from One Another?
        9. B.2.9. Is the Linux Mascot Really a Penguin?
      3. B.3. Summary