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

Book Description

The most up-to-date guide on the latest version of Linux

Linux is an excellent, low-cost alternative to more expensive operating systems and its popularity continues to remain on the rise. This comprehensive resource offers more than 100 pages of the most sought-after Linux commands, provides new tutorial chapters aimed specifically at Windows desktop users and Windows administrators, and includes a new chapter on using Linux on gadgets. You'll get up to speed with Linux so that you can install secure, fully functioning Linux server systems.

  • Shows you what Linux is capable of, how to install it, how to make the most of its features, and ways to make use of its commands

  • Provides step-by-step instructions for transitioning to Linux and explains how to choose which distribution is right for you, find and use the applications you need, set up the desktop to be the way you like it, and more

  • Walks you through transferring your stuff (music, documents, and images) from Windows to Linux

Whether you're making the transition from Windows or Macintosh and need to choose which distribution is right for you or you are already savvy with Linux and need a thoroughly up-to-date guide on its newest features, Linux Bible 2011 Edition is a must have!

Table of Contents

  1. Copyright
  2. Credits
  3. About the Author
  4. About the Technical Editor
  5. Acknowledgments
  6. Introduction
    1. Understanding the Linux Mystique
    2. How This Book Is Organized
    3. New in Linux Bible 2011 Edition
    4. What You Will Get from This Book
    5. Conventions Used in This Book
  7. 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. Creating the Perfect Desktop
      1. 2.1. Starting with Your Linux Desktop
      2. 2.2. Step 1: Getting a Computer
        1. 2.2.1. Selecting Computer Hardware
        2. 2.2.2. Choosing Networking Hardware
      3. 2.3. Step 2: Installing Your Linux Desktop
        1. 2.3.1. Starting with a Fedora Desktop
        2. 2.3.2. Preparing to Install Extra Software
        3. 2.3.3. Checking Available Software
      4. 2.4. Step 3: Configuring Your Desktop
      5. 2.5. Step 4: Adding Applications
        1. 2.5.1. Choosing Office Applications
        2. 2.5.2. Choosing Games
        3. 2.5.3. Choosing Multimedia Applications
        4. 2.5.4. Choosing Internet Applications
        5. 2.5.5. Choosing Other applications
      6. 2.6. Step 5: Transitioning from Windows
        1. 2.6.1. Getting Your Files from Windows to Linux
          1. 2.6.1.1. Getting Windows Content from the Local Disk
          2. 2.6.1.2. Getting Windows Content over the Network
          3. 2.6.1.3. Putting Content on Removable Media
          4. 2.6.1.4. Running Windows applications in Linux
      7. 2.7. Summary
  8. 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 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 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. Moving Windows
          3. 3.3.5.3. Resizing Windows
          4. 3.3.5.4. Pinning Windows on Top or Bottom
          5. 3.3.5.5. Using Virtual Desktops
          6. 3.3.5.6. Adding Widgets
        6. 3.3.6. Configuring the Desktop
      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 Your Own Desktop
        1. 3.5.1. Configuring X
          1. 3.5.1.1. Creating a Working X Configuration File
          2. 3.5.1.2. Getting New X Drivers
          3. 3.5.1.3. Tuning Up Your X Configuration File
        2. 3.5.2. Choosing a Window Manager
        3. 3.5.3. Choosing Your Personal Window Manager
      6. 3.6. Getting More Information
      7. 3.7. Summary
    2. 4. E-mailing and Web Browsing
      1. 4.1. Using E-mail
        1. 4.1.1. Choosing an E-mail Client
        2. 4.1.2. Transitioning Your E-mail from Windows
        3. 4.1.3. Getting Started With E-mail
        4. 4.1.4. Tuning Up E-mail
        5. 4.1.5. Reading E-mail with Thunderbird
          1. 4.1.5.1. Setting Up an E-mail Account
          2. 4.1.5.2. Connecting to the Mail Server
          3. 4.1.5.3. Managing Incoming Mail
          4. 4.1.5.4. Composing and Sending Mail
          5. 4.1.5.5. Filtering Mail and Catching spam
        6. 4.1.6. Managing E-mail in Evolution
          1. 4.1.6.1. Receiving, Composing, and Sending E-Mail
          2. 4.1.6.2. Managing e-mail with search Folders
          3. 4.1.6.3. Filtering E-mail Messages
        7. 4.1.7. Reading E-Mail with Seamonkey Mail
        8. 4.1.8. Working with Text-Based E-mail Readers
          1. 4.1.8.1. Mutt Mail Reader
          2. 4.1.8.2. Mail Reader
      2. 4.2. Choosing a Web Browser
      3. 4.3. Exploring the SeaMonkey Suite
      4. 4.4. Using Firefox
        1. 4.4.1. Setting Up Firefox
          1. 4.4.1.1. Setting Firefox Preferences
          2. 4.4.1.2. Adding Add-Ons and plug-Ins
          3. 4.4.1.3. Changing Firefox Themes
        2. 4.4.2. Securing Firefox
        3. 4.4.3. Tips for Using Firefox
        4. 4.4.4. Using Firefox Controls
        5. 4.4.5. Improving Firefox Browsing by Adding a preferences Toolbar
        6. 4.4.6. Doing Cool Things with Firefox
          1. 4.4.6.1. Blocking pop-Ups
          2. 4.4.6.2. Using Tabbed Browsing
          3. 4.4.6.3. Resizing Web page Text
      5. 4.5. Using Text-Based Web Browsers
      6. 4.6. Summary
    3. 5. Playing Music, Video, Photos, and Games
      1. 5.1. Running Multimedia Servers
      2. 5.2. Using Totem for Audio and Video
        1. 5.2.1. Adding Audio/Video Support to Totem
        2. 5.2.2. Using Totem as a Movie Player
      3. 5.3. Playing Music in Linux
        1. 5.3.1. Playing Music with Rhythmbox
        2. 5.3.2. Playing Music with the XMMs Multimedia Player
          1. 5.3.2.1. Using the Equalizer
          2. 5.3.2.2. Using the Playlist Editor
        3. 5.3.3. Managing Music on Your iPod with gtkpod
          1. 5.3.3.1. Installing and Starting gtkpod iPod Manager
          2. 5.3.3.2. Using gtkipod iPod Manager
        4. 5.3.4. Recording and Ripping Music
          1. 5.3.4.1. Creating an Audio CD with cdrecord
          2. 5.3.4.2. Ripping CDs with Grip
      4. 5.4. Playing Videos
        1. 5.4.1. Exploring Codecs
        2. 5.4.2. Watching Video with xine
          1. 5.4.2.1. Using xine
          2. 5.4.2.2. Creating Playlists with xine
          3. 5.4.2.3. xine Tips
      5. 5.5. Working with Images
        1. 5.5.1. Managing Images in Shotwell Photo Manager
        2. 5.5.2. Manipulating Images with GIMP
        3. 5.5.3. Acquiring Screen Captures
      6. 5.6. Playing Games on Linux
        1. 5.6.1. Jumping into Linux Gaming
        2. 5.6.2. Finding Linux Games
        3. 5.6.3. Basic Linux Gaming Information
        4. 5.6.4. Getting Started with Commercial Games in Linux
        5. 5.6.5. Playing TransGaming and Cedega Games
      7. 5.7. Summary
  9. III. Learning System Administration Skills
    1. 6. Starting with System Administration
      1. 6.1. Graphical Administration Tools
        1. 6.1.1. Using Web-Based Administration
          1. 6.1.1.1. Open Source Projects Offering Web Administration
          2. 6.1.1.2. The Webmin Administration Tool
        2. 6.1.2. Graphical Administration with Different Distributions
          1. 6.1.2.1. Fedora/RHEL system-config Tools
          2. 6.1.2.2. SUSE YaST Tools
      2. 6.2. Using the root Login
        1. 6.2.1. Becoming root from the Shell (su Command)
        2. 6.2.2. Allowing Limited Administrative Access
        3. 6.2.3. Gaining Administrative Access with sudo
      3. 6.3. Exploring Administrative Commands, Configuration Files, and Log Files
        1. 6.3.1. Administrative Commands
        2. 6.3.2. Administrative Configuration Files
        3. 6.3.3. Administrative Log Files
      4. 6.4. Using Other Administrative Logins
      5. 6.5. Summary
    2. 7. Installing Linux
      1. 7.1. Choosing a Linux Distribution
      2. 7.2. Getting Your Own Linux Distribution
        1. 7.2.1. Finding another Linux Distribution
        2. 7.2.2. Understanding What You Need
        3. 7.2.3. Downloading the Distribution
        4. 7.2.4. Burning the Distribution to CD
      3. 7.3. Exploring Common Installation Topics
        1. 7.3.1. Knowing Your Computer Hardware
        2. 7.3.2. Upgrading or Installing from Scratch
        3. 7.3.3. Dual Booting
        4. 7.3.4. Installing Linux to Run Virtually
        5. 7.3.5. Using Installation Boot Options
        6. 7.3.6. Partitioning Hard Drives
          1. 7.3.6.1. Understanding Different Partition Types
          2. 7.3.6.2. Partitioning During Fedora Installation
            1. 7.3.6.2.1. Linux or Swap Partitions
            2. 7.3.6.2.2. LVM Partitions
            3. 7.3.6.2.3. RAID Partitions
          3. 7.3.6.3. Reasons for Partitioning
          4. 7.3.6.4. Partitioning with fdisk
          5. 7.3.6.5. Tips for Creating Partitions
        7. 7.3.7. Using LILO or GRUB Boot Loaders
          1. 7.3.7.1. Booting Your Computer with Grub
          2. 7.3.7.2. Booting with GRUB
          3. 7.3.7.3. Temporarily Changing Boot Options
          4. 7.3.7.4. Permanently Changing Boot Options
          5. 7.3.7.5. adding a New GRUB Boot Image
          6. 7.3.7.6. Booting Your Computer with LILO
            1. 7.3.7.6.1. Using LILO
            2. 7.3.7.6.2. Setting Up the /etc/lilo.conf File
          7. 7.3.7.7. Changing Your Boot Loader
        8. 7.3.8. Configuring Networking
        9. 7.3.9. Configuring Other Administrative Features
      4. 7.4. Summary
    3. 8. Running Commands from the Shell
      1. 8.1. Starting a Shell
        1. 8.1.1. Using the Shell Prompt
        2. 8.1.2. Using a Terminal Window
        3. 8.1.3. Using Virtual Terminals
      2. 8.2. Choosing Your Shell
        1. 8.2.1. Using bash (and Earlier sh) Shells
        2. 8.2.2. Using tcsh (and Earlier csh) Shells
        3. 8.2.3. Using ash
        4. 8.2.4. Using ksh
        5. 8.2.5. Using zsh
      3. 8.3. Exploring the Shell
        1. 8.3.1. Checking Your Login Session
        2. 8.3.2. Checking Directories and Permissions
        3. 8.3.3. Checking System Activity
        4. 8.3.4. Exiting the Shell
      4. 8.4. Using the Shell in Linux
        1. 8.4.1. Locating Commands
        2. 8.4.2. Rerunning Commands
          1. 8.4.2.1. Command-line Editing
          2. 8.4.2.2. Command-line Completion
          3. 8.4.2.3. Command-line Recall
        3. 8.4.3. Connecting and Expanding Commands
          1. 8.4.3.1. Piping Commands
          2. 8.4.3.2. Sequential Commands
          3. 8.4.3.3. Background Commands
          4. 8.4.3.4. Expanding Commands
          5. 8.4.3.5. Expanding Arithmetic Expressions
          6. 8.4.3.6. Expanding Environment Variables
      5. 8.5. Creating Your Shell Environment
        1. 8.5.1. Configuring Your Shell
          1. 8.5.1.1. Setting Your Prompt
          2. 8.5.1.2. Adding Environment Variables
          3. 8.5.1.3. Understanding Common Shell Variables
          4. 8.5.1.4. Adding Aliases
        2. 8.5.2. Managing Background and Foreground Processes
          1. 8.5.2.1. Starting Background Processes
          2. 8.5.2.2. Using Foreground and Background Commands
      6. 8.6. Working with the Linux File System
        1. 8.6.1. Creating Files and Directories
          1. 8.6.1.1. Using Metacharacters and Operators
          2. 8.6.1.2. Using File-matching Metacharacters
          3. 8.6.1.3. Using File-redirection Metacharacters
          4. 8.6.1.4. Understanding File Permissions
        2. 8.6.2. Moving, Copying, and Deleting Files
      7. 8.7. Using the vi Text Editor
        1. 8.7.1. Starting with vi
        2. 8.7.2. Moving Around the File
        3. 8.7.3. Searching for Text
        4. 8.7.4. Using Numbers with Commands
        5. 8.7.5. Learning More about vi
      8. 8.8. Summary
    4. 9. Learning Basic Administration
      1. 9.1. Creating User Accounts
        1. 9.1.1. Adding Users with useradd
        2. 9.1.2. Setting User Defaults
        3. 9.1.3. Modifying Users with usermod
        4. 9.1.4. Deleting Users with userdel
      2. 9.2. Configuring Hardware
        1. 9.2.1. Managing Removable Hardware
          1. 9.2.1.1. Removable Media on a GNOME Desktop
          2. 9.2.1.2. Removable Media on a SUSE KDE Desktop
        2. 9.2.2. Working with Loadable Modules
          1. 9.2.2.1. Listing Loaded Modules
          2. 9.2.2.2. Loading Modules
          3. 9.2.2.3. Removing Modules
      3. 9.3. Monitoring System Performance
      4. 9.4. Doing Remote System Administration
      5. 9.5. Summary
    5. 10. Managing Disks and File Systems
      1. 10.1. Partitioning Hard Disks
      2. 10.2. Mounting File Systems
        1. 10.2.1. Supported File Systems
        2. 10.2.2. Using the fstab File to Define Mountable File Systems
        3. 10.2.3. Using the mount Command to Mount File Systems
          1. 10.2.3.1. Mounting Removable Media
          2. 10.2.3.2. Mounting a Disk Image in loopback
        4. 10.2.4. Using the umount Command
      3. 10.3. Using the mkfs Command to Create a File System
      4. 10.4. Adding a Hard Disk
      5. 10.5. Checking System Space
        1. 10.5.1. Displaying System Space with df
        2. 10.5.2. Checking Disk Usage with du
        3. 10.5.3. Finding Disk Consumption with find
      6. 10.6. Summary
    6. 11. Setting Up Networking
      1. 11.1. Connecting to the Network
        1. 11.1.1. Connecting via Dial-Up Service
        2. 11.1.2. Connecting a Single Wired Ethernet Card
        3. 11.1.3. Sharing a Network Connection with Other Computers
        4. 11.1.4. Connecting servers
        5. 11.1.5. Connecting Other Equipment
      2. 11.2. Using Ethernet Connections to Connect 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. Understanding Your Internet Connection
      3. 11.3. Using Dial-Up to Connect 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
    7. 12. Using Network Tools
      1. 12.1. Running Commands to Browse the Web
      2. 12.2. Transferring Files
        1. 12.2.1. Downloading Files With wget
        2. 12.2.2. Transferring Files With curl
        3. 12.2.3. Transferring Files with FTP Commands
        4. 12.2.4. Using SSH Tools to Transfer Files
          1. 12.2.4.1. Copying Remote Files With scp
          2. 12.2.4.2. Copying Remote Files in sftp and lftp sessions
        5. 12.2.5. Using Windows File Transfer Tools
      3. 12.3. Sharing Remote Directories
        1. 12.3.1. Sharing Remote Directories With NFS
          1. 12.3.1.1. Viewing NFS Shares
          2. 12.3.1.2. Mounting NFS Shares
        2. 12.3.2. Sharing Remote Directories with Samba
          1. 12.3.2.1. Viewing and Accessing Samba Shares
          2. 12.3.2.2. Mounting Samba (CIFS) Shares
          3. 12.3.2.3. Looking Up Samba Hosts
          4. 12.3.2.4. Checking Samba Server Configuration
        3. 12.3.3. Sharing Remote Directories With SSHFS
      4. 12.4. Chatting with Friends in IRC
      5. 12.5. Using Text-Based E-mail Clients
        1. 12.5.1. Managing E-mail with mail
        2. 12.5.2. Managing E-mail with mutt
      6. 12.6. Summary
    8. 13. Securing Linux
      1. 13.1. Linux Security Checklist
        1. 13.1.1. Finding Distribution-Specific Security Resources
        2. 13.1.2. Finding General Security Resources
      2. 13.2. Using Linux Securely
        1. 13.2.1. Using Password Protection
        2. 13.2.2. Choosing Good Passwords
        3. 13.2.3. Using a Shadow Password File
          1. 13.2.3.1. Breaking Encrypted Passwords
          2. 13.2.3.2. Checking for the Shadow Password File
      3. 13.3. Using Log Files
        1. 13.3.1. The Role of syslogd
        2. 13.3.2. Redirecting Logs to a Loghost with syslogd
        3. 13.3.3. Understanding the Messages Log File
      4. 13.4. Using Secure Shell Tools
        1. 13.4.1. Starting the ssh Service
        2. 13.4.2. Using the ssh, sftp, and scp Commands
        3. 13.4.3. Using ssh, scp, and sftp without Passwords
      5. 13.5. Securing Linux Servers
        1. 13.5.1. Controlling Access to Services with TCP Wrappers
        2. 13.5.2. Understanding Attack Techniques
        3. 13.5.3. Protecting Against Denial-of-Service Attacks
          1. 13.5.3.1. Mailbombing
            1. 13.5.3.1.1. Blocking Mail with procmail
            2. 13.5.3.1.2. Blocking Mail with sendmail
          2. 13.5.3.2. Spam Relaying
          3. 13.5.3.3. Smurf Amplification Attack
        4. 13.5.4. Protecting Against Distributed Denial-of-Service Attacks
        5. 13.5.5. Protecting Against Intrusion Attacks
          1. 13.5.5.1. Evaluating Access to Network Services
          2. 13.5.5.2. Disabling Network Services
        6. 13.5.6. Securing Servers with SELinux
        7. 13.5.7. Protecting Web Servers with Certificates and Encryption
          1. 13.5.7.1. Symmetric Cryptography
          2. 13.5.7.2. Asymmetric Cryptography
          3. 13.5.7.3. Secure Socket Layer
            1. 13.5.7.3.1. Creating SSL Certificates
            2. 13.5.7.3.2. Using Third-Party Certificate Signers
            3. 13.5.7.3.3. Creating a Certificate Service Request
            4. 13.5.7.3.4. Getting your CSR Signed
            5. 13.5.7.3.5. Creating Self-Signed Certificates
            6. 13.5.7.3.6. Restarting your Web Server
            7. 13.5.7.3.7. Troubleshooting Your Certificates
      6. 13.6. Using Security Tools from Linux Live CDs
        1. 13.6.1. Advantages of Security Live CDs
        2. 13.6.2. Using INSERT to Check for Rootkits
      7. 13.7. Summary
    9. 14. Creating Useful Shell Scripts
      1. 14.1. Understanding Shell Scripts
        1. 14.1.1. Executing and Debugging Shell Scripts
        2. 14.1.2. Understanding Shell Variables
          1. 14.1.2.1. Special Shell Variables
          2. 14.1.2.2. Parameter Expansion in bash
        3. 14.1.3. Performing Arithmetic in Shell Scripts
        4. 14.1.4. Using Programming Constructs in Shell Scripts
          1. 14.1.4.1. The "if . . . then" Statements
          2. 14.1.4.2. The case Command
          3. 14.1.4.3. The "for . . . do" Loop
          4. 14.1.4.4. The "while . . . do" and "until . . . do" Loops
        5. 14.1.5. Some Useful External Programs
          1. 14.1.5.1. The General Regular expression parser
          2. 14.1.5.2. Remove Sections of Lines of Text (cut)
          3. 14.1.5.3. Translate or Delete Characters (tr)
          4. 14.1.5.4. The Stream Editor (sed)
        6. 14.1.6. Trying Some Simple Shell Scripts
          1. 14.1.6.1. A Simple Telephone List
          2. 14.1.6.2. A Simple Backup Script
      2. 14.2. Summary
  10. IV. Setting Up Linux Servers
    1. 15. Running a Linux Web Server
      1. 15.1. Components of a Web Server (Apache, MySQL, and PHP)
        1. 15.1.1. Apache
        2. 15.1.2. MySQL
        3. 15.1.3. PHP
      2. 15.2. Setting Up Your Web Server
        1. 15.2.1. Installing Apache
        2. 15.2.2. Installing PHP
        3. 15.2.3. Installing MySQL
      3. 15.3. Operating Your Web Server
        1. 15.3.1. Editing Your Apache Configuration Files
        2. 15.3.2. Adding a Virtual Host to Apache
        3. 15.3.3. User Content and the UserDir Setting
        4. 15.3.4. Installing a Web Application: Coppermine Photo Gallery
      4. 15.4. Troubleshooting Your Web Server
        1. 15.4.1. Configuration Errors
        2. 15.4.2. Access Forbidden and Server Internal Errors
      5. 15.5. Securing Your Web Traffic with SSL/TLS
        1. 15.5.1. Generating Your SSL Keys
        2. 15.5.2. Configuring Apache to Support SSL/TLS
      6. 15.6. Summary
    2. 16. Running a Mail Server
      1. 16.1. Internet E-Mail's Inner Workings
      2. 16.2. About the System and the Software Used
      3. 16.3. Preparing Your System
        1. 16.3.1. Configuring DNS for Direct Delivery
        2. 16.3.2. Configuring for Retrieval from a Mail Host
      4. 16.4. Installing and Configuring the Mail Server Software
        1. 16.4.1. Installing Exim and Courier
        2. 16.4.2. Installing ClamAV and SpamAssassin
      5. 16.5. Testing and Troubleshooting
        1. 16.5.1. Checking Logs
        2. 16.5.2. Common Errors (and How to Fix Them)
          1. 16.5.2.1. Messages Rejected by Exim
          2. 16.5.2.2. Messages Not Delivered by Exim
          3. 16.5.2.3. Login Failures When Connecting to Courier
      6. 16.6. Configuring Mail Clients
        1. 16.6.1. Configuring Fetchmail
        2. 16.6.2. Configuring Web-based Mail
      7. 16.7. Securing Communications with SSL/TLS
      8. 16.8. Summary
    3. 17. Running a Print Server
      1. 17.1. Common UNIX Printing System
      2. 17.2. Setting Up Printers
        1. 17.2.1. Using Web-Based CUPS Administration
        2. 17.2.2. Using the Printer Configuration Window
          1. 17.2.2.1. Configuring Local Printers with the Printer Configuration Window
            1. 17.2.2.1.1. Adding a Local Printer
            2. 17.2.2.1.2. Editing a Local Printer
          2. 17.2.2.2. Configuring Remote Printers
          3. 17.2.2.3. Adding a Remote CUPS Printer
          4. 17.2.2.4. Adding a Remote UNIX Printer
          5. 17.2.2.5. Adding a Windows (SMB) Printer
      3. 17.3. Working with CUPS Printing
        1. 17.3.1. Configuring the CUPS Server (cupsd.conf)
        2. 17.3.2. Starting the CUPS Server
        3. 17.3.3. Configuring CUPS Printer Options Manually
      4. 17.4. Using Printing Commands
        1. 17.4.1. Printing with lpr
        2. 17.4.2. Listing Status with lpc
        3. 17.4.3. Removing Print Jobs with lprm
      5. 17.5. Configuring Print Servers
        1. 17.5.1. Configuring a Shared CUPS Printer
        2. 17.5.2. Configuring a Shared Samba Printer
          1. 17.5.2.1. Understanding smb.conf for Printing
          2. 17.5.2.2. Setting Up SMB Clients
      6. 17.6. Summary
    4. 18. Running a File Server
      1. 18.1. Setting Up an NFS File Server
        1. 18.1.1. Getting NFS
        2. 18.1.2. Sharing NFS File Systems
          1. 18.1.2.1. Configuring the /etc/exports File
            1. 18.1.2.1.1. Hostnames in /etc/exports
            2. 18.1.2.1.2. Access Options in /etc/exports
            3. 18.1.2.1.3. User Mapping Options in /etc/exports
          2. 18.1.2.2. Exporting the Shared File Systems
          3. 18.1.2.3. Starting the nfs Daemons
        3. 18.1.3. Using NFS File Systems
          1. 18.1.3.1. Manually Mounting an NFS File System
          2. 18.1.3.2. Automatically Mounting an NFS File System
            1. 18.1.3.2.1. Mounting noauto File Systems
            2. 18.1.3.2.2. Using Mount Options
          3. 18.1.3.3. Using autofs to Mount NFs File Systems On Demand
        4. 18.1.4. Unmounting NFS File Systems
        5. 18.1.5. Other Cool Things to Do with NFS
        6. 18.1.6. Understanding NFS Security Issues
      2. 18.2. Setting Up a Samba File Server
        1. 18.2.1. Getting and Installing Samba
        2. 18.2.2. Configuring Samba with SWAT
          1. 18.2.2.1. Turning on the SWAT Service
          2. 18.2.2.2. Starting with SWAT
          3. 18.2.2.3. Creating global Samba settings in SWAT
            1. 18.2.2.3.1. Base Options
            2. 18.2.2.3.2. Security Options
            3. 18.2.2.3.3. Logging Options
            4. 18.2.2.3.4. Protocol Options
            5. 18.2.2.3.5. Tuning Options
            6. 18.2.2.3.6. Printing Options
            7. 18.2.2.3.7. Browse Options
            8. 18.2.2.3.8. WINS options
            9. 18.2.2.3.9. EventLog options
            10. 18.2.2.3.10. Miscellaneous options
          4. 18.2.2.4. Configuring shared directories with SWAT
          5. 18.2.2.5. Checking your Samba setup with SWAT
        3. 18.2.3. Working with Samba files and commands
          1. 18.2.3.1. Editing the smb.conf file
          2. 18.2.3.2. Adding Samba Users
          3. 18.2.3.3. Starting the Samba Service
          4. 18.2.3.4. Testing Your Samba Permissions
          5. 18.2.3.5. Checking the Status of Shared Directories
        4. 18.2.4. Using Samba Shared Directories
          1. 18.2.4.1. Using Samba from Nautilus
          2. 18.2.4.2. Mounting Samba Directories in Linux
        5. 18.2.5. Troubleshooting your Samba Server
          1. 18.2.5.1. Basic Networking in Place?
          2. 18.2.5.2. Samba Service Running?
          3. 18.2.5.3. Firewall Open?
          4. 18.2.5.4. User Passwords Working?
      3. 18.3. Summary
  11. V. Choosing and Installing Different Linux Distributions
    1. 19. Running Ubuntu Linux
      1. 19.1. Overview of Ubuntu
        1. 19.1.1. Ubuntu Releases
        2. 19.1.2. Ubuntu Installer
        3. 19.1.3. Ubuntu as a Desktop
        4. 19.1.4. Ubuntu as a Server
        5. 19.1.5. Ubuntu Spin-offs
        6. 19.1.6. Challenges Facing Ubuntu
      2. 19.2. Installing Ubuntu
      3. 19.3. Getting Started with Ubuntu
        1. 19.3.1. Trying Out the Desktop
        2. 19.3.2. Adding More Software
      4. 19.4. Getting More Information About Ubuntu
      5. 19.5. Summary
    2. 20. Running Fedora and Red Hat Enterprise Linux
      1. 20.1. Digging into Features
        1. 20.1.1. Red Hat Installer (Anaconda)
        2. 20.1.2. Custom Spins, Install Sets, and Live CDs
        3. 20.1.3. RPM Package Management
        4. 20.1.4. Latest Desktop Technology
        5. 20.1.5. System Configuration Tools
      2. 20.2. Going Forward with Red Hat Enterprise Linux
        1. 20.2.1. Red Hat Network and Satellite Servers
        2. 20.2.2. Red Hat Enterprise Virtualization
        3. 20.2.3. Red Hat Cloud Computing
      3. 20.3. Going Forward with Fedora
        1. 20.3.1. Growing Community Support for Fedora
        2. 20.3.2. Joining Fedora Special Interest Groups
        3. 20.3.3. Forums and Mailing Lists
      4. 20.4. Installing Fedora
        1. 20.4.1. Beginning the Installation
        2. 20.4.2. Running the Fedora Firstboot
      5. 20.5. Summary
    3. 21. Running Debian GNU/Linux
      1. 21.1. Inside Debian GNU/Linux
        1. 21.1.1. Debian Packages
        2. 21.1.2. Debian Package Management Tools
        3. 21.1.3. Debian Releases
      2. 21.2. Getting Help with Debian
      3. 21.3. Installing Debian GNU/Linux
        1. 21.3.1. Hardware Requirements and Installation Planning
          1. 21.3.1.1. Workstations
          2. 21.3.1.2. Servers
        2. 21.3.2. Running the Installer
      4. 21.4. Managing Your Debian System
        1. 21.4.1. Configuring Network Connections
          1. 21.4.1.1. Ip Networks: Ethernet and Wireless
          2. 21.4.1.2. Dial-up PPP Connections
          3. 21.4.1.3. PPPoE Connections
        2. 21.4.2. Package Management Using APT
          1. 21.4.2.1. Managing the List of Package Repositories
          2. 21.4.2.2. Updating the APT Package Database
          3. 21.4.2.3. Finding and Installing Packages
          4. 21.4.2.4. Removing Packages
          5. 21.4.2.5. Upgrading Your System
        3. 21.4.3. Package Management Using dpkg
          1. 21.4.3.1. Installing and Removing Packages
          2. 21.4.3.2. Querying the Package Database
          3. 21.4.3.3. Examining a Package File
        4. 21.4.4. Installing Package Sets (Tasks) with tasksel
        5. 21.4.5. Alternatives, Diversions, and Stat Overrides
        6. 21.4.6. Managing Package Configuration with debconf
      5. 21.5. Summary
    4. 22. Running SUSE and openSUSE Linux
      1. 22.1. Understanding SUSE Linux Enterprise and openSUSE
      2. 22.2. What's in SUSE Distributions?
        1. 22.2.1. Installation and Configuration with YaST
        2. 22.2.2. RPM Package Management
        3. 22.2.3. Automated Software Updates
      3. 22.3. Installing openSUSE
      4. 22.4. Starting with openSUSE
      5. 22.5. Summary
    5. 23. Running PCLinuxOS
      1. 23.1. Starting with PCLinuxOS
        1. 23.1.1. Discovering What's in PCLinuxOS
        2. 23.1.2. Adding More Applications
      2. 23.2. Installing PCLinuxOS
        1. 23.2.1. Starting the Install
        2. 23.2.2. Configuring After Installation
      3. 23.3. Remastering PCLinuxOS
      4. 23.4. Summary
    6. 24. Running Bootable Linux Distributions
      1. 24.1. Overview of Bootable Linux Distributions
      2. 24.2. Trying a Bootable Linux
        1. 24.2.1. Starting with KNOPPIX
          1. 24.2.1.1. Looking Inside KNOPPIX
          2. 24.2.1.2. Booting KNOPPIX
          3. 24.2.1.3. Correcting Boot Problems
          4. 24.2.1.4. Customizing KNOPPIX
          5. 24.2.1.5. Special Features and Workarounds
        2. 24.2.2. Showcasing Linux from a Live CD
        3. 24.2.3. Security and Rescue Bootables
          1. 24.2.3.1. BackTrack Network Security Suite
          2. 24.2.3.2. SystemrescueCd
          3. 24.2.3.3. KNOppIX Security Tools Distribution
          4. 24.2.3.4. The Inside Security Rescue Toolkit
        4. 24.2.4. Demonstration Bootables
        5. 24.2.5. Multimedia Bootables
          1. 24.2.5.1. MoviX
          2. 24.2.5.2. GeeXboX
          3. 24.2.5.3. KnoppMyth
        6. 24.2.6. Tiny Desktops
          1. 24.2.6.1. Damn Small Linux
          2. 24.2.6.2. Puppy Linux
      3. 24.3. Special-Purpose Bootables
      4. 24.4. Customizing a Bootable Linux
      5. 24.5. Building a Live CD with Fedora
      6. 24.6. Summary
  12. VI. Programming in Linux
    1. 25. Programming Environments and Interfaces
      1. 25.1. Understanding Programming Environments
      2. 25.2. Using Linux Programming Environments
        1. 25.2.1. The Linux Development environment
          1. 25.2.1.1. The Process Model
          2. 25.2.1.2. CPU and Memory Protection
          3. 25.2.1.3. The security Model
          4. 25.2.1.4. Preemptive Multitasking
          5. 25.2.1.5. Multiuser by Design
          6. 25.2.1.6. Interprocess Communication
          7. 25.2.1.7. The Building Blocks Philosophy
        2. 25.2.2. Graphical Programming environments
        3. 25.2.3. Eclipse: The Universal Tool Platform
          1. 25.2.3.1. KDevelop: KDE's IDE
          2. 25.2.3.2. Anjuta: An IDE for GTK/GNOME
          3. 25.2.3.3. Code Crusader
        4. 25.2.4. The Command-line Programming environment
      3. 25.3. Linux Programming Interfaces
        1. 25.3.1. Creating Command-line Interfaces
          1. 25.3.1.1. Creating Text Applications with ncurses
          2. 25.3.1.2. Creating Text Applications with S-Lang
        2. 25.3.2. Creating Graphical Interfaces
        3. 25.3.3. Application Programming Interfaces
      4. 25.4. Summary
    2. 26. Programming Tools and Utilities
      1. 26.1. The Well-Stocked Toolkit
      2. 26.2. Using the GCC Compiler
        1. 26.2.1. Compiling Multiple Source Code Files
        2. 26.2.2. GCC Command-line Options
      3. 26.3. Automating Builds with make
      4. 26.4. Library Utilities
        1. 26.4.1. The nm Command
        2. 26.4.2. The ar Command
        3. 26.4.3. The ldd Command
        4. 26.4.4. The ldconfig Command
        5. 26.4.5. Environment Variables and Configuration Files
      5. 26.5. Source Code Control
        1. 26.5.1. Source Code Control Using RCS
          1. 26.5.1.1. Checking Files In and Out
          2. 26.5.1.2. Making Changes to Repository Files
          3. 26.5.1.3. Additional Command-line Options
        2. 26.5.2. Source Code Control with CVS
      6. 26.6. Debugging with GNU Debugger
        1. 26.6.1. Starting GDB
        2. 26.6.2. Inspecting Code in the Debugger
        3. 26.6.3. Examining Data
        4. 26.6.4. Setting Breakpoints
        5. 26.6.5. Working with Source Code
      7. 26.7. Summary
  13. VII. Appendix and License
    1. 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. AntiX Linux
        6. A.1.6. BackTrack 3 Linux Security Suite
        7. A.1.7. Gentoo Linux
        8. A.1.8. openSUSE Linux
        9. A.1.9. PCLinuxOs
        10. A.1.10. Inside Security Rescue Toolkit
        11. A.1.11. Puppy Linux
        12. A.1.12. debian GNU/Linux
        13. A.1.13. Damn Small Linux
        14. A.1.14. SystemRescueCd
        15. A.1.15. Coyote Linux
        16. A.1.16. Tiny Core Linux
        17. A.1.17. SLAX
        18. A.1.18. CentOS
      2. A.2. Creating Linux CDs or DVDs
      3. A.3. Getting Source Code
    2. GNU General Public License
      1. Preamble
      2. Terms and Conditions for Copying, Distribution and Modification
        1. NO WARRANTY