\contentsline {chapter}{\numberline {1}Overview}{1}{chapter.1} \contentsline {subsection}{Objectives}{1}{section*.2} \contentsline {section}{\numberline {1.1}Generic Features of Unix}{2}{section.1.1} \contentsline {section}{\numberline {1.2}Linux --- The Kernel of a System}{3}{section.1.2} \contentsline {section}{\numberline {1.3}Fundamental Characteristics of Linux}{4}{section.1.3} \contentsline {section}{\numberline {1.4}Multiuser Multitasking and Time-sharing}{5}{section.1.4} \contentsline {section}{\numberline {1.5}Protected memory mode}{6}{section.1.5} \contentsline {section}{\numberline {1.6}Multiple Filesystem Types}{7}{section.1.6} \contentsline {section}{\numberline {1.7}The Many Faces of a GNU/Linux System}{8}{section.1.7} \contentsline {section}{\numberline {1.8}The Filesystem}{9}{section.1.8} \contentsline {section}{\numberline {1.9}Filenames}{10}{section.1.9} \contentsline {section}{\numberline {1.10}Filename Extensions and File Types}{11}{section.1.10} \contentsline {section}{\numberline {1.11}Hidden Filenames}{12}{section.1.11} \contentsline {section}{\numberline {1.12}The Shell ({\normalfont \ttfamily bash})}{13}{section.1.12} \contentsline {section}{\numberline {1.13}Key Features of the Bash Shell}{14}{section.1.13} \contentsline {section}{\numberline {1.14}Interacting with a Linux `Terminal'}{15}{section.1.14} \contentsline {section}{\numberline {1.15}Software Tools: The UNIX Philosophy}{16}{section.1.15} \contentsline {section}{\numberline {1.16}Tasks/Processes}{17}{section.1.16} \contentsline {section}{\numberline {1.17}Process Communication}{18}{section.1.17} \contentsline {section}{\numberline {1.18}Re-directing I/O to and from Files}{19}{section.1.18} \contentsline {section}{\numberline {1.19}Re-directing I/O to and from Files (continued)}{20}{section.1.19} \contentsline {section}{\numberline {1.20}Pipes \& Tools}{21}{section.1.20} \contentsline {section}{\numberline {1.21}Linux as a Programming Environment}{22}{section.1.21} \contentsline {section}{\numberline {1.22}Networking}{23}{section.1.22} \contentsline {section}{\numberline {1.23}TCP/IP}{24}{section.1.23} \contentsline {section}{\numberline {1.24}Documentation}{25}{section.1.24} \contentsline {section}{\numberline {1.25}Using the {\em man pages} (On-Line Manual)}{26}{section.1.25} \contentsline {section}{\numberline {1.26}Overview Exercises}{27}{section.1.26} \contentsline {subsection}{What should I focus on?}{27}{section*.3} \contentsline {subsection}{The exercises}{27}{section*.4} \contentsline {section}{\numberline {1.27}Overview Solutions}{30}{section.1.27} \contentsline {chapter}{\numberline {2}Basic Shell}{31}{chapter.2} \contentsline {subsection}{Objectives}{31}{section*.5} \contentsline {section}{\numberline {2.1}Introduction}{32}{section.2.1} \contentsline {section}{\numberline {2.2}Getting around the command line}{33}{section.2.2} \contentsline {section}{\numberline {2.3}History}{34}{section.2.3} \contentsline {section}{\numberline {2.4}Plumbing}{35}{section.2.4} \contentsline {section}{\numberline {2.5}Plumbing (continued)}{36}{section.2.5} \contentsline {section}{\numberline {2.6}Output Redirection}{37}{section.2.6} \contentsline {section}{\numberline {2.7}Input Redirection}{38}{section.2.7} \contentsline {section}{\numberline {2.8}Combining Redirection}{39}{section.2.8} \contentsline {section}{\numberline {2.9}Pipelines}{40}{section.2.9} \contentsline {section}{\numberline {2.10}Background Processes}{41}{section.2.10} \contentsline {section}{\numberline {2.11}Background Processes (continued)}{42}{section.2.11} \contentsline {section}{\numberline {2.12}Background Processes and {\ttfamily nohup}}{43}{section.2.12} \contentsline {section}{\numberline {2.13}Command Grouping and Sub-shells}{44}{section.2.13} \contentsline {section}{\numberline {2.14}Process Management}{45}{section.2.14} \contentsline {section}{\numberline {2.15}Signals}{46}{section.2.15} \contentsline {section}{\numberline {2.16}Signals (continued)}{47}{section.2.16} \contentsline {section}{\numberline {2.17}Background Processes: {\normalfont \ttfamily top}}{48}{section.2.17} \contentsline {section}{\numberline {2.18}Filename Generation}{49}{section.2.18} \contentsline {section}{\numberline {2.19}Quoting Mechanisms}{50}{section.2.19} \contentsline {section}{\numberline {2.20}Shell built-in commands}{51}{section.2.20} \contentsline {section}{\numberline {2.21}Basic Shell Exercises}{52}{section.2.21} \contentsline {subsubsection}{What should I focus on?}{52}{section*.6} \contentsline {subsubsection}{The exercises}{52}{section*.7} \contentsline {section}{\numberline {2.22}Basic Shell Solutions}{54}{section.2.22} \contentsline {chapter}{\numberline {3}Basic Tools}{55}{chapter.3} \contentsline {subsection}{Objectives}{55}{section*.8} \contentsline {section}{\numberline {3.1}Introduction}{56}{section.3.1} \contentsline {section}{\numberline {3.2}Using Tools}{57}{section.3.2} \contentsline {section}{\numberline {3.3}The On-Line Manual ({\normalfont \ttfamily man})}{58}{section.3.3} \contentsline {section}{\numberline {3.4}Finding Files the Long Way ({\normalfont \ttfamily find})}{59}{section.3.4} \contentsline {section}{\numberline {3.5}Find examples}{60}{section.3.5} \contentsline {section}{\numberline {3.6}Locate Files ({\ttfamily locate})}{62}{section.3.6} \contentsline {section}{\numberline {3.7}View and Concatenate Files ({\normalfont \ttfamily cat})}{63}{section.3.7} \contentsline {section}{\numberline {3.8}View Large Files \& Output ({\normalfont \ttfamily less})}{64}{section.3.8} \contentsline {section}{\numberline {3.9}Viewing Parts of Files ({\normalfont \ttfamily head} and {\normalfont \ttfamily tail})}{65}{section.3.9} \contentsline {section}{\numberline {3.10}Listing File Information ({\normalfont \ttfamily ls})}{66}{section.3.10} \contentsline {section}{\numberline {3.11}File Classification ({\normalfont \ttfamily file})}{67}{section.3.11} \contentsline {section}{\numberline {3.12}Count Words, Lines, Characters ({\normalfont \ttfamily wc})}{68}{section.3.12} \contentsline {section}{\numberline {3.13}Differences Between Files ({\normalfont \ttfamily diff})}{69}{section.3.13} \contentsline {section}{\numberline {3.14}Compare Binary Files ({\normalfont \ttfamily cmp})}{71}{section.3.14} \contentsline {section}{\numberline {3.15}Regular Expression Searches ({\normalfont \ttfamily grep})}{72}{section.3.15} \contentsline {section}{\numberline {3.16}{\normalfont \ttfamily grep} examples}{73}{section.3.16} \contentsline {section}{\numberline {3.17}Sort and Merge Files ({\normalfont \ttfamily sort})}{74}{section.3.17} \contentsline {section}{\numberline {3.18}{\normalfont \ttfamily sort} Examples}{75}{section.3.18} \contentsline {section}{\numberline {3.19}Display Unique Lines ({\normalfont \ttfamily uniq})}{76}{section.3.19} \contentsline {section}{\numberline {3.20}Split Files ({\normalfont \ttfamily split})}{77}{section.3.20} \contentsline {section}{\numberline {3.21}Splitting Files by Context ({\normalfont \ttfamily csplit})}{78}{section.3.21} \contentsline {section}{\numberline {3.22}Dividing files into columns: {\ttfamily cut}}{79}{section.3.22} \contentsline {section}{\numberline {3.23}Compression Utilities: {\normalfont \ttfamily bzip2} and {\normalfont \ttfamily gzip}}{81}{section.3.23} \contentsline {section}{\numberline {3.24}Store and Retrieve Archives ({\normalfont \ttfamily tar})}{82}{section.3.24} \contentsline {section}{\numberline {3.25}Translating Characters ({\normalfont \ttfamily tr})}{84}{section.3.25} \contentsline {section}{\numberline {3.26}Examples of {\normalfont \ttfamily tr} Usage}{85}{section.3.26} \contentsline {section}{\numberline {3.27}Execute programs at specified times ({\normalfont \ttfamily at})}{86}{section.3.27} \contentsline {section}{\numberline {3.28}Options and commands related to {\normalfont \ttfamily at}}{87}{section.3.28} \contentsline {section}{\numberline {3.29}Running commands regularly ({\normalfont \ttfamily crontab})}{88}{section.3.29} \contentsline {section}{\numberline {3.30}Evaluate expressions ({\normalfont \ttfamily expr})}{89}{section.3.30} \contentsline {section}{\numberline {3.31}Linux Printing}{91}{section.3.31} \contentsline {section}{\numberline {3.32}LPRng and CUPS}{92}{section.3.32} \contentsline {section}{\numberline {3.33}Main Printing Tools}{93}{section.3.33} \contentsline {section}{\numberline {3.34}Using {\normalfont \ttfamily lpr}}{94}{section.3.34} \contentsline {section}{\numberline {3.35}Using {\normalfont \ttfamily lpq}}{95}{section.3.35} \contentsline {section}{\numberline {3.36}Using {\normalfont \ttfamily lprm}}{96}{section.3.36} \contentsline {section}{\numberline {3.37}Printing Information}{97}{section.3.37} \contentsline {section}{\numberline {3.38}Basic Tools Exercises}{98}{section.3.38} \contentsline {section}{\numberline {3.39}Basic Tools Solutions}{100}{section.3.39} \contentsline {chapter}{\numberline {4}More Tools}{101}{chapter.4} \contentsline {subsection}{Objectives}{101}{section*.9} \contentsline {section}{\numberline {4.1}Introduction}{102}{section.4.1} \contentsline {section}{\numberline {4.2}Displaying System Processes ({\normalfont \ttfamily top})}{103}{section.4.2} \contentsline {section}{\numberline {4.3}Options and Interactive Commands for {\normalfont \ttfamily top}}{104}{section.4.3} \contentsline {section}{\numberline {4.4}Reporting process status ({\normalfont \ttfamily ps})}{105}{section.4.4} \contentsline {section}{\numberline {4.5}Options for Reporting process status ({\normalfont \ttfamily ps})}{106}{section.4.5} \contentsline {section}{\numberline {4.6}Sorting output of ps}{107}{section.4.6} \contentsline {section}{\numberline {4.7}Flavours of \texttt {ps} Options}{108}{section.4.7} \contentsline {section}{\numberline {4.8}Examples using \texttt {ps}}{109}{section.4.8} \contentsline {section}{\numberline {4.9}Finding Files using specified criteria ({\normalfont \ttfamily find})}{110}{section.4.9} \contentsline {section}{\numberline {4.10}Criteria used in {\normalfont \ttfamily find} expressions}{111}{section.4.10} \contentsline {section}{\numberline {4.11}Examples of using ({\normalfont \ttfamily find})}{112}{section.4.11} \contentsline {section}{\numberline {4.12}Reporting virtual memory statistics ({\normalfont \ttfamily vmstat})}{113}{section.4.12} \contentsline {section}{\numberline {4.13}Output from {\normalfont \ttfamily vmstat}}{114}{section.4.13} \contentsline {section}{\numberline {4.14}free}{115}{section.4.14} \contentsline {section}{\numberline {4.15}ldd}{116}{section.4.15} \contentsline {section}{\numberline {4.16}uptime}{117}{section.4.16} \contentsline {section}{\numberline {4.17}\texttt {xargs} --- Filters}{118}{section.4.17} \contentsline {section}{\numberline {4.18}\texttt {xargs} --- an Adapter}{119}{section.4.18} \contentsline {section}{\numberline {4.19}\texttt {xargs}}{120}{section.4.19} \contentsline {section}{\numberline {4.20}Options to {\ttfamily xargs}}{121}{section.4.20} \contentsline {section}{\numberline {4.21}Positioning filenames with {\normalfont \ttfamily xargs}}{122}{section.4.21} \contentsline {section}{\numberline {4.22}cpio}{123}{section.4.22} \contentsline {section}{\numberline {4.23}{\ttfamily gzip}}{124}{section.4.23} \contentsline {section}{\numberline {4.24}Unzipping}{125}{section.4.24} \contentsline {section}{\numberline {4.25}\texttt {tar}}{126}{section.4.25} \contentsline {section}{\numberline {4.26}\texttt {tar} Examples}{127}{section.4.26} \contentsline {section}{\numberline {4.27}Raw devices and {\normalfont \ttfamily tar}}{128}{section.4.27} \contentsline {section}{\numberline {4.28}Exercises}{129}{section.4.28} \contentsline {section}{\numberline {4.29}Solutions}{130}{section.4.29} \contentsline {chapter}{\numberline {5}Basic Filesystem}{131}{chapter.5} \contentsline {subsection}{Objectives}{131}{section*.10} \contentsline {section}{\numberline {5.1}Filesystem Overview}{132}{section.5.1} \contentsline {section}{\numberline {5.2}Files}{133}{section.5.2} \contentsline {section}{\numberline {5.3}Directories}{134}{section.5.3} \contentsline {section}{\numberline {5.4}Directory Hierarchy}{135}{section.5.4} \contentsline {section}{\numberline {5.5}Pathnames}{136}{section.5.5} \contentsline {section}{\numberline {5.6}Current Directory, Home Directory}{137}{section.5.6} \contentsline {subsection}{The \texttt {cd} Command}{137}{section*.11} \contentsline {section}{\numberline {5.7}Dot (.) and DotDot(..)}{138}{section.5.7} \contentsline {section}{\numberline {5.8}Moving and Copying Files}{139}{section.5.8} \contentsline {section}{\numberline {5.9}Removing Files}{140}{section.5.9} \contentsline {section}{\numberline {5.10}Operations on Directories}{141}{section.5.10} \contentsline {section}{\numberline {5.11}Inodes}{142}{section.5.11} \contentsline {section}{\numberline {5.12}Inodes: \texttt {ls -i} and \texttt {stat}}{143}{section.5.12} \contentsline {section}{\numberline {5.13}Links}{144}{section.5.13} \contentsline {section}{\numberline {5.14}Hard links}{145}{section.5.14} \contentsline {section}{\numberline {5.15}Symbolic Links (Soft Links)}{146}{section.5.15} \contentsline {section}{\numberline {5.16}Symbolic (or Soft) Links (continued)}{147}{section.5.16} \contentsline {section}{\numberline {5.17}File Ownership, Users and Groups}{148}{section.5.17} \contentsline {section}{\numberline {5.18}Access Control, Users and Groups}{149}{section.5.18} \contentsline {section}{\numberline {5.19}Categories of Access Control}{150}{section.5.19} \contentsline {section}{\numberline {5.20}Access Control --- Example}{151}{section.5.20} \contentsline {section}{\numberline {5.21}Examples of minimum file permission requirements}{152}{section.5.21} \contentsline {section}{\numberline {5.22}Changing Access Permission: \texttt {chmod}}{153}{section.5.22} \contentsline {section}{\numberline {5.23}\texttt {chmod} symbolically}{154}{section.5.23} \contentsline {section}{\numberline {5.24}\texttt {chmod} numerically}{155}{section.5.24} \contentsline {section}{\numberline {5.25}Special Permissions: SUID, SGID}{156}{section.5.25} \contentsline {section}{\numberline {5.26}\texttt {chmod}: Symbolic Permissions}{157}{section.5.26} \contentsline {section}{\numberline {5.27}\texttt {chmod}: SUID, SGID}{158}{section.5.27} \contentsline {section}{\numberline {5.28}Set Group ID Directory}{159}{section.5.28} \contentsline {section}{\numberline {5.29}Set Group ID Directory --- Example}{160}{section.5.29} \contentsline {section}{\numberline {5.30}Restricted Deletion Flag (``Sticky Bit'') on Directories}{161}{section.5.30} \contentsline {section}{\numberline {5.31}\texttt {umask}}{162}{section.5.31} \contentsline {section}{\numberline {5.32}Special Files --- \texttt {/dev}}{163}{section.5.32} \contentsline {section}{\numberline {5.33}Special Files --- \texttt {/proc}}{164}{section.5.33} \contentsline {section}{\numberline {5.34}Filesystem Structure and \texttt {/etc/fstab}}{166}{section.5.34} \contentsline {section}{\numberline {5.35}\texttt {/etc/fstab} --- Example}{167}{section.5.35} \contentsline {section}{\numberline {5.36}Mounting Additional Volumes}{168}{section.5.36} \contentsline {section}{\numberline {5.37}Mounting shared filesystems}{169}{section.5.37} \contentsline {section}{\numberline {5.38}Summary}{170}{section.5.38} \contentsline {section}{\numberline {5.39}Filesystem Exercises}{171}{section.5.39} \contentsline {section}{\numberline {5.40}Filesystem Solutions}{173}{section.5.40} \contentsline {chapter}{\numberline {6}Finding Documentation}{175}{chapter.6} \contentsline {subsection}{Objectives}{175}{section*.12} \contentsline {section}{\numberline {6.1}Documentation everywhere?}{176}{section.6.1} \contentsline {section}{\numberline {6.2}Where is the documentation on my computer?}{177}{section.6.2} \contentsline {section}{\numberline {6.3}Some main sources of information from the Internet}{178}{section.6.3} \contentsline {section}{\numberline {6.4}Mailing Lists}{179}{section.6.4} \contentsline {section}{\numberline {6.5}Asking Questions on a Mailing List}{180}{section.6.5} \contentsline {section}{\numberline {6.6}Online Magazines}{181}{section.6.6} \contentsline {section}{\numberline {6.7}Info}{182}{section.6.7} \contentsline {section}{\numberline {6.8}Using the \texttt {info} command}{183}{section.6.8} \contentsline {section}{\numberline {6.9}Using \texttt {emacs} to read \texttt {info} pages}{184}{section.6.9} \contentsline {section}{\numberline {6.10}Using \texttt {rpm} to identify all documentation for a software package}{185}{section.6.10} \contentsline {section}{\numberline {6.11}A quick guide to \texttt {rpm}}{186}{section.6.11} \contentsline {section}{\numberline {6.12}A quick guide to \texttt {dpkg} (on Debian Linux)}{187}{section.6.12} \contentsline {section}{\numberline {6.13}Browsing Documentation Via Your Web Server}{188}{section.6.13} \contentsline {section}{\numberline {6.14}The exercises}{189}{section.6.14} \contentsline {section}{\numberline {6.15}Documentation: Solutions}{191}{section.6.15} \contentsline {chapter}{\numberline {7}Administering User Accounts and Permissions with {\normalfont \ttfamily sudo}}{193}{chapter.7} \contentsline {subsection}{Objectives}{193}{section*.13} \contentsline {section}{\numberline {7.1}System Administration without always being SuperUser}{194}{section.7.1} \contentsline {section}{\numberline {7.2}Setting your PATH}{195}{section.7.2} \contentsline {section}{\numberline {7.3}Linux is a Multiuser System}{196}{section.7.3} \contentsline {section}{\numberline {7.4}User account overview}{197}{section.7.4} \contentsline {section}{\numberline {7.5}{\normalfont \ttfamily password} file}{198}{section.7.5} \contentsline {section}{\numberline {7.6}Example {\normalfont \ttfamily passwd} file}{199}{section.7.6} \contentsline {section}{\numberline {7.7}\normalfont \ttfamily group}{200}{section.7.7} \contentsline {section}{\numberline {7.8}{\normalfont \ttfamily shadow} file}{201}{section.7.8} \contentsline {section}{\numberline {7.9}logging in}{202}{section.7.9} \contentsline {section}{\numberline {7.10}logging in---Pluggable Authentication Modules (PAM)}{203}{section.7.10} \contentsline {section}{\numberline {7.11}Adding User Accounts with {\normalfont \ttfamily useradd}}{204}{section.7.11} \contentsline {section}{\numberline {7.12}What happens when you create a user account?}{205}{section.7.12} \contentsline {section}{\numberline {7.13}Local accounts and LDAP accounts}{206}{section.7.13} \contentsline {section}{\numberline {7.14}Configuring {\normalfont \ttfamily useradd} to create local accounts}{207}{section.7.14} \contentsline {section}{\numberline {7.15}Creating a group}{208}{section.7.15} \contentsline {section}{\numberline {7.16}Adding a user to a secondary group}{209}{section.7.16} \contentsline {section}{\numberline {7.17}What groups does this user belong to?}{210}{section.7.17} \contentsline {section}{\numberline {7.18}Effective group ID and {\ttfamily newgrp}}{211}{section.7.18} \contentsline {section}{\numberline {7.19}Directory for a Group Project}{212}{section.7.19} \contentsline {section}{\numberline {7.20}File permissions for directories}{213}{section.7.20} \contentsline {section}{\numberline {7.21}Examples of minimum file permission requirements}{214}{section.7.21} \contentsline {section}{\numberline {7.22}Set Group ID Directory}{215}{section.7.22} \contentsline {section}{\numberline {7.23}Set Group ID Directory --- Example}{216}{section.7.23} \contentsline {section}{\numberline {7.24}User Management Exercises}{217}{section.7.24} \contentsline {section}{\numberline {7.25}User Management Solutions}{219}{section.7.25} \contentsline {chapter}{\numberline {8}Managing Users--quotas}{221}{chapter.8} \contentsline {subsection}{Objectives}{221}{section*.14} \contentsline {section}{\numberline {8.1}Checking {\normalfont \ttfamily /etc/passwd} and {\normalfont \ttfamily /etc/shadow} with {\normalfont \ttfamily pwck}}{222}{section.8.1} \contentsline {section}{\numberline {8.2}Checking {\normalfont \ttfamily /etc/group} with {\normalfont \ttfamily grpck}}{223}{section.8.2} \contentsline {section}{\numberline {8.3}Managing User Connections: {\normalfont \ttfamily login}, {\normalfont \ttfamily /etc/securetty}, {\normalfont \ttfamily /etc/usertty}}{224}{section.8.3} \contentsline {section}{\numberline {8.4}Limiting User Resources with {\normalfont \ttfamily ulimit}}{225}{section.8.4} \contentsline {section}{\numberline {8.5}Managing Disk Use with Quotas}{226}{section.8.5} \contentsline {section}{\numberline {8.6}Setting up Quotas on a Filesystem}{227}{section.8.6} \contentsline {section}{\numberline {8.7}Specifying Quotas for Users and Groups}{228}{section.8.7} \contentsline {section}{\numberline {8.8}Checking and Reporting on Quotas}{229}{section.8.8} \contentsline {section}{\numberline {8.9}Managing Users--quotas: Exercises}{230}{section.8.9} \contentsline {chapter}{\numberline {9}Introduction to Editing With {\normalfont \ttfamily vi}}{231}{chapter.9} \contentsline {subsection}{Objectives}{231}{section*.15} \contentsline {section}{\numberline {9.1}Text editors under Linux}{232}{section.9.1} \contentsline {section}{\numberline {9.2}{\normalfont \ttfamily vi} and your terminal}{233}{section.9.2} \contentsline {section}{\numberline {9.3}{\normalfont \ttfamily vi} screen layout}{234}{section.9.3} \contentsline {section}{\numberline {9.4}Opening files with {\ttfamily vi}}{235}{section.9.4} \contentsline {section}{\numberline {9.5}{\normalfont \ttfamily vi} Modes}{236}{section.9.5} \contentsline {section}{\numberline {9.6}Saving, changing file and quitting}{237}{section.9.6} \contentsline {section}{\numberline {9.7}Moving around in command mode}{238}{section.9.7} \contentsline {section}{\numberline {9.8}Numeric Prefixes}{239}{section.9.8} \contentsline {section}{\numberline {9.9}Further Movement}{240}{section.9.9} \contentsline {section}{\numberline {9.10}Further Movement --- Example}{241}{section.9.10} \contentsline {section}{\numberline {9.11}Movement by lines}{242}{section.9.11} \contentsline {section}{\numberline {9.12}Movement by lines --- Examples}{243}{section.9.12} \contentsline {section}{\numberline {9.13}Inserting text}{244}{section.9.13} \contentsline {section}{\numberline {9.14}{\ttfamily i} command}{245}{section.9.14} \contentsline {section}{\numberline {9.15}Multiple Insertion}{246}{section.9.15} \contentsline {section}{\numberline {9.16}Deleting Text}{247}{section.9.16} \contentsline {section}{\numberline {9.17}Changing Text}{248}{section.9.17} \contentsline {section}{\numberline {9.18}Copy and Paste}{249}{section.9.18} \contentsline {section}{\numberline {9.19}Finding your place}{250}{section.9.19} \contentsline {section}{\numberline {9.20}Miscellaneous Commands}{251}{section.9.20} \contentsline {section}{\numberline {9.21}Search and replace}{252}{section.9.21} \contentsline {section}{\numberline {9.22}Regular Expressions}{253}{section.9.22} \contentsline {section}{\numberline {9.23}Regular Expression Conventions}{254}{section.9.23} \contentsline {section}{\numberline {9.24}Regular Expression Examples}{255}{section.9.24} \contentsline {section}{\numberline {9.25}Regular Expression Replacement}{256}{section.9.25} \contentsline {section}{\numberline {9.26}Help}{257}{section.9.26} \contentsline {section}{\numberline {9.27}{\normalfont \ttfamily vi} Exercises}{258}{section.9.27} \contentsline {section}{\numberline {9.28}{\normalfont \ttfamily vi} Solutions}{260}{section.9.28} \contentsline {chapter}{\numberline {10}Basic X-Windows}{263}{chapter.10} \contentsline {subsection}{Objectives}{263}{section*.16} \contentsline {section}{\numberline {10.1}What X-Windows Is}{264}{section.10.1} \contentsline {section}{\numberline {10.2}X Needs Window Managers}{265}{section.10.2} \contentsline {section}{\numberline {10.3}Window Managers Are Applications}{266}{section.10.3} \contentsline {section}{\numberline {10.4}Desktop Environments}{267}{section.10.4} \contentsline {section}{\numberline {10.5}Starting X}{268}{section.10.5} \contentsline {section}{\numberline {10.6}Stopping X}{269}{section.10.6} \contentsline {section}{\numberline {10.7}Running Shells (Xterms) Under X}{270}{section.10.7} \contentsline {section}{\numberline {10.8}Running Applications from an {\normalfont \ttfamily xterm}}{271}{section.10.8} \contentsline {section}{\numberline {10.9}Running Applications from a window manager}{272}{section.10.9} \contentsline {section}{\numberline {10.10}Configuring X}{273}{section.10.10} \contentsline {section}{\numberline {10.11}Basic X Hardware Configuration}{274}{section.10.11} \contentsline {section}{\numberline {10.12}Basic X Software Configuration}{275}{section.10.12} \contentsline {section}{\numberline {10.13}Networked X --- The Client-Server Relationship}{276}{section.10.13} \contentsline {section}{\numberline {10.14}Principles of Running Remote X Apps}{277}{section.10.14} \contentsline {section}{\numberline {10.15}How to Run Remote X Apps}{278}{section.10.15} \contentsline {section}{\numberline {10.16}Authentication}{279}{section.10.16} \contentsline {section}{\numberline {10.17}Better Authentication}{280}{section.10.17} \contentsline {section}{\numberline {10.18}Basic X Exercises}{281}{section.10.18} \contentsline {chapter}{\numberline {11}Fundamentals of TCP/IP}{283}{chapter.11} \contentsline {subsection}{Objectives}{283}{section*.17} \contentsline {section}{\numberline {11.1}Fundamentals of TCP/IP Networking}{284}{section.11.1} \contentsline {section}{\numberline {11.2}History}{285}{section.11.2} \contentsline {section}{\numberline {11.3}Recap of basic IP Concepts --- Components}{286}{section.11.3} \contentsline {section}{\numberline {11.4}IP versions}{287}{section.11.4} \contentsline {section}{\numberline {11.5}Packets}{288}{section.11.5} \contentsline {section}{\numberline {11.6}Encapsulation}{289}{section.11.6} \contentsline {section}{\numberline {11.7}Internet Protocol Datagram}{290}{section.11.7} \contentsline {section}{\numberline {11.8}TCP Header}{291}{section.11.8} \contentsline {section}{\numberline {11.9}UDP Header}{292}{section.11.9} \contentsline {section}{\numberline {11.10}Addresses}{293}{section.11.10} \contentsline {section}{\numberline {11.11}Addresses (continued)}{294}{section.11.11} \contentsline {section}{\numberline {11.12}Netmasks and subnetting}{295}{section.11.12} \contentsline {section}{\numberline {11.13}CIDR: Classless Inter-Domain Routing}{296}{section.11.13} \contentsline {section}{\numberline {11.14}CIDR: Classless Inter-Domain Routing---examples}{297}{section.11.14} \contentsline {section}{\numberline {11.15}Transferring Data}{298}{section.11.15} \contentsline {section}{\numberline {11.16}Hosts \& Interfaces}{299}{section.11.16} \contentsline {section}{\numberline {11.17}Routing}{300}{section.11.17} \contentsline {section}{\numberline {11.18}Ports}{301}{section.11.18} \contentsline {section}{\numberline {11.19}Ports cont..}{302}{section.11.19} \contentsline {section}{\numberline {11.20}Exercises}{303}{section.11.20} \contentsline {section}{\numberline {11.21}Solutions}{304}{section.11.21} \contentsline {chapter}{\numberline {12}Practical TCP/IP}{307}{chapter.12} \contentsline {subsection}{Objectives}{307}{section*.18} \contentsline {section}{\numberline {12.1}Ping Protocols}{308}{section.12.1} \contentsline {section}{\numberline {12.2}Network Statistics ({\normalfont \ttfamily netstat}) in Practice}{309}{section.12.2} \contentsline {section}{\numberline {12.3}{\normalfont \ttfamily netstat} (continued)}{310}{section.12.3} \contentsline {section}{\numberline {12.4}{\normalfont \ttfamily netstat} --- Further Examples}{311}{section.12.4} \contentsline {section}{\numberline {12.5}Network Traffic ({\normalfont \ttfamily tcpdump}) in Practice}{312}{section.12.5} \contentsline {section}{\numberline {12.6}{\normalfont \ttfamily tcpdump} Options}{313}{section.12.6} \contentsline {section}{\numberline {12.7}{\normalfont \ttfamily tcpdump} Examples}{314}{section.12.7} \contentsline {section}{\numberline {12.8}Firewalling}{315}{section.12.8} \contentsline {section}{\numberline {12.9}Basic Theory}{316}{section.12.9} \contentsline {section}{\numberline {12.10}Basic Theory (continued)}{317}{section.12.10} \contentsline {section}{\numberline {12.11}{\normalfont \ttfamily ipchains}}{318}{section.12.11} \contentsline {section}{\numberline {12.12}{\normalfont \ttfamily ipchains} Details}{319}{section.12.12} \contentsline {section}{\numberline {12.13}{\normalfont \ttfamily ipchains} Options}{320}{section.12.13} \contentsline {section}{\numberline {12.14}Options For Rules}{321}{section.12.14} \contentsline {section}{\numberline {12.15}{\normalfont \ttfamily ipchains} --- Examples}{322}{section.12.15} \contentsline {section}{\numberline {12.16}Removing Rules}{323}{section.12.16} \contentsline {section}{\numberline {12.17}Implementing ipchains}{324}{section.12.17} \contentsline {section}{\numberline {12.18}Save and restore}{325}{section.12.18} \contentsline {section}{\numberline {12.19}{\normalfont \ttfamily ipchains} setup script}{326}{section.12.19} \contentsline {section}{\numberline {12.20}Real World {\normalfont \ttfamily ipchains}}{327}{section.12.20} \contentsline {section}{\numberline {12.21}Interface Configuration and Management}{328}{section.12.21} \contentsline {section}{\numberline {12.22}Point-and-Click Interface Administration}{329}{section.12.22} \contentsline {section}{\numberline {12.23}{\normalfont \ttfamily /etc/sysconfig/network-scripts}}{330}{section.12.23} \contentsline {section}{\numberline {12.24}{\normalfont \ttfamily ifcfg-ethx}}{331}{section.12.24} \contentsline {section}{\numberline {12.25}Altering An Interface}{332}{section.12.25} \contentsline {section}{\numberline {12.26}Adding an Interface}{333}{section.12.26} \contentsline {section}{\numberline {12.27}The `Proper' Way}{334}{section.12.27} \contentsline {section}{\numberline {12.28}Drivers}{335}{section.12.28} \contentsline {section}{\numberline {12.29}The Secure Shell in Practice ({\normalfont \ttfamily ssh})}{336}{section.12.29} \contentsline {section}{\numberline {12.30}Secure Copying in Practice ({\normalfont \ttfamily scp})}{337}{section.12.30} \contentsline {section}{\numberline {12.31}Summary}{338}{section.12.31} \contentsline {section}{\numberline {12.32}Exercises}{339}{section.12.32} \contentsline {section}{\numberline {12.33}Solutions}{340}{section.12.33} \contentsline {chapter}{\numberline {13}SSH --- The Secure Shell}{341}{chapter.13} \contentsline {subsection}{Objectives}{341}{section*.19} \contentsline {section}{\numberline {13.1}What is the Secure Shell?}{342}{section.13.1} \contentsline {section}{\numberline {13.2}But what's wrong with {\ttfamily telnet}?}{343}{section.13.2} \contentsline {section}{\numberline {13.3}Cryptography}{344}{section.13.3} \contentsline {section}{\numberline {13.4}OpenSSH and its history}{345}{section.13.4} \contentsline {section}{\numberline {13.5}Okay, I like the blowfish---what else does OpenSSH provide?}{346}{section.13.5} \contentsline {section}{\numberline {13.6}So okay, how do I use this Secure Shell?}{347}{section.13.6} \contentsline {section}{\numberline {13.7}Using {\ttfamily scp} to copy files over the network}{348}{section.13.7} \contentsline {section}{\numberline {13.8}Useful options with {\ttfamily scp}}{349}{section.13.8} \contentsline {section}{\numberline {13.9}SSH uses public and private keys}{350}{section.13.9} \contentsline {section}{\numberline {13.10}SSH Architecture}{351}{section.13.10} \contentsline {section}{\numberline {13.11}Overview of SSH}{352}{section.13.11} \contentsline {section}{\numberline {13.12}Steps of establishing a connection}{353}{section.13.12} \contentsline {section}{\numberline {13.13}Using {\ttfamily ssh-keygen} to create a personal pair of private and public keys}{354}{section.13.13} \contentsline {section}{\numberline {13.14}The host keys in {\normalfont \ttfamily /etc/ssh/ssh\_known\_hosts} and {\normalfont \ttfamily $\sim $/.ssh/known\_hosts}}{355}{section.13.14} \contentsline {section}{\numberline {13.15}The file {\normalfont \ttfamily $\sim $/.ssh/authorized\_keys}}{356}{section.13.15} \contentsline {section}{\numberline {13.16}The User's Public and Private Keys}{357}{section.13.16} \contentsline {section}{\numberline {13.17}SSH1 and SSH2}{358}{section.13.17} \contentsline {section}{\numberline {13.18}The public and private key pairs: a summary}{359}{section.13.18} \contentsline {section}{\numberline {13.19}Files and Permissions I Recommend}{360}{section.13.19} \contentsline {section}{\numberline {13.20}Using {\ttfamily ssh-agent} to log in without typing passwords}{361}{section.13.20} \contentsline {section}{\numberline {13.21}Setting up {\ttfamily ssh-agent}: logging in without typing passwords}{362}{section.13.21} \contentsline {section}{\numberline {13.22}Using {\ttfamily ssh-add}: logging in without typing passwords}{363}{section.13.22} \contentsline {section}{\numberline {13.23}An easier way: using \texttt {keychain}}{364}{section.13.23} \contentsline {section}{\numberline {13.24}What \texttt {keychain} Does}{365}{section.13.24} \contentsline {section}{\numberline {13.25}Setting your hostname}{366}{section.13.25} \contentsline {section}{\numberline {13.26}Configuring your own account to use \texttt {keychain} }{368}{section.13.26} \contentsline {subsection}{Automating network transfers using \texttt {keychain} and SSH}{368}{section*.20} \contentsline {section}{\numberline {13.27}Running X applications remotely}{369}{section.13.27} \contentsline {section}{\numberline {13.28}Configuring SSH for {\ttfamily X}}{370}{section.13.28} \contentsline {section}{\numberline {13.29}Security options for the client in {\normalfont \ttfamily /etc/ssh/ssh\_config}}{371}{section.13.29} \contentsline {section}{\numberline {13.30}{\normalfont \ttfamily rsync}: using it with SSH to mirror data}{372}{section.13.30} \contentsline {section}{\numberline {13.31}Examples of using \texttt {rsync}}{373}{section.13.31} \contentsline {section}{\numberline {13.32}Using \texttt {ssh} from Windows, with Cygwin}{374}{section.13.32} \contentsline {section}{\numberline {13.33}What else can SSH do?}{375}{section.13.33} \contentsline {section}{\numberline {13.34}Summary}{376}{section.13.34} \contentsline {section}{\numberline {13.35}SSH References}{377}{section.13.35} \contentsline {section}{\numberline {13.36}Secure Shell Exercises}{378}{section.13.36} \contentsline {section}{\numberline {13.37}Secure Shell Solutions}{380}{section.13.37} \contentsline {chapter}{\numberline {14}Shared File Systems}{381}{chapter.14} \contentsline {subsection}{Objectives}{381}{section*.21} \contentsline {section}{\numberline {14.1}NFS (Network File System)}{382}{section.14.1} \contentsline {section}{\numberline {14.2}NFS Basics \dots continued}{383}{section.14.2} \contentsline {section}{\numberline {14.3}Exporting File Systems}{384}{section.14.3} \contentsline {section}{\numberline {14.4}Viewing exports}{385}{section.14.4} \contentsline {section}{\numberline {14.5}Importing File Systems}{386}{section.14.5} \contentsline {section}{\numberline {14.6}Samba}{387}{section.14.6} \contentsline {section}{\numberline {14.7}Samba --- Availability}{388}{section.14.7} \contentsline {section}{\numberline {14.8}Samba Documentation}{389}{section.14.8} \contentsline {section}{\numberline {14.9}Samba Installation}{390}{section.14.9} \contentsline {section}{\numberline {14.10}Samba Basics}{391}{section.14.10} \contentsline {section}{\numberline {14.11}Access to Files and Printers}{392}{section.14.11} \contentsline {section}{\numberline {14.12}Testing Samba}{393}{section.14.12} \contentsline {section}{\numberline {14.13}Smbclient}{394}{section.14.13} \contentsline {section}{\numberline {14.14}Samba configuration File}{395}{section.14.14} \contentsline {section}{\numberline {14.15}Samba Configuration Example}{396}{section.14.15} \contentsline {section}{\numberline {14.16}Directories for Samba as a PDC}{397}{section.14.16} \contentsline {section}{\numberline {14.17}Testing Samba}{398}{section.14.17} \contentsline {subsection}{Notes on Testing Samba}{398}{section*.22} \contentsline {section}{\numberline {14.18}Exercises}{399}{section.14.18} \contentsline {section}{\numberline {14.19}Solutions}{400}{section.14.19} \contentsline {chapter}{\numberline {15}Apache Basics}{403}{chapter.15} \contentsline {subsection}{Objectives}{403}{section*.23} \contentsline {section}{\numberline {15.1}What is {\normalfont \ttfamily Apache}?}{404}{section.15.1} \contentsline {section}{\numberline {15.2}Installation}{405}{section.15.2} \contentsline {section}{\numberline {15.3}How Apache Listens}{406}{section.15.3} \contentsline {section}{\numberline {15.4}Configuration File(s)}{407}{section.15.4} \contentsline {section}{\numberline {15.5}Key Configuration Directives}{408}{section.15.5} \contentsline {section}{\numberline {15.6}{\em ServerRoot}, {\em DocumentRoot}}{409}{section.15.6} \contentsline {section}{\numberline {15.7}Is {\normalfont \ttfamily Apache} running?}{410}{section.15.7} \contentsline {section}{\numberline {15.8}{\em ServerAdmin}}{411}{section.15.8} \contentsline {section}{\numberline {15.9}{\em BindAddress}, and {\em Port}}{412}{section.15.9} \contentsline {section}{\numberline {15.10}{\em Listen}}{413}{section.15.10} \contentsline {section}{\numberline {15.11}{\em User} and {\em Group}}{414}{section.15.11} \contentsline {section}{\numberline {15.12}Apache Processes}{415}{section.15.12} \contentsline {section}{\numberline {15.13}Logging}{416}{section.15.13} \contentsline {section}{\numberline {15.14}Customizable Logging}{417}{section.15.14} \contentsline {section}{\numberline {15.15}{\em CustomLog} examples}{418}{section.15.15} \contentsline {section}{\numberline {15.16}Example Configuration}{419}{section.15.16} \contentsline {section}{\numberline {15.17}Basic Exercises}{420}{section.15.17} \contentsline {section}{\numberline {15.18}Solutions}{421}{section.15.18} \contentsline {chapter}{\numberline {16}Apache}{423}{chapter.16} \contentsline {subsection}{Objectives}{423}{section*.24} \contentsline {section}{\numberline {16.1}Two sites and more \dots }{424}{section.16.1} \contentsline {section}{\numberline {16.2}Two sites and more \dots \ continued}{425}{section.16.2} \contentsline {section}{\numberline {16.3}Virtual Hosting Options}{426}{section.16.3} \contentsline {section}{\numberline {16.4}Name-based hosting}{427}{section.16.4} \contentsline {section}{\numberline {16.5}Name-based hosting (continued)}{428}{section.16.5} \contentsline {section}{\numberline {16.6}IP-based hosting}{429}{section.16.6} \contentsline {section}{\numberline {16.7}Block Directives}{430}{section.16.7} \contentsline {section}{\numberline {16.8}Block Directives (continued)}{431}{section.16.8} \contentsline {section}{\numberline {16.9}{\em DirectoryMatch}, et al.}{432}{section.16.9} \contentsline {section}{\numberline {16.10}Access Control using {\normalfont \ttfamily .htaccess} files}{433}{section.16.10} \contentsline {section}{\numberline {16.11}Access Control (continued)}{434}{section.16.11} \contentsline {section}{\numberline {16.12}Authorisation Files}{435}{section.16.12} \contentsline {section}{\numberline {16.13}Authorisation Files (continued)}{436}{section.16.13} \contentsline {section}{\numberline {16.14}Access Control using {\normalfont \ttfamily httpd.conf}}{437}{section.16.14} \contentsline {section}{\numberline {16.15}Pros and Cons of using Access Files for Authentication }{438}{section.16.15} \contentsline {section}{\numberline {16.16}How Can Users Change Their Password?}{439}{section.16.16} \contentsline {section}{\numberline {16.17}WebDAV: a protocol for web collaboration}{440}{section.16.17} \contentsline {section}{\numberline {16.18}WebDAV and Apache}{441}{section.16.18} \contentsline {section}{\numberline {16.19}WebDAV Configuration}{442}{section.16.19} \contentsline {section}{\numberline {16.20}Apache WebDAV configuration example}{443}{section.16.20} \contentsline {section}{\numberline {16.21}Configuring WebDAV: directories and files}{444}{section.16.21} \contentsline {section}{\numberline {16.22}What is WebDAV useful for?}{445}{section.16.22} \contentsline {section}{\numberline {16.23}What is the future of WebDAV?}{446}{section.16.23} \contentsline {section}{\numberline {16.24}Information about WebDAV}{447}{section.16.24} \contentsline {section}{\numberline {16.25}Other useful directives}{448}{section.16.25} \contentsline {section}{\numberline {16.26}Examples}{449}{section.16.26} \contentsline {section}{\numberline {16.27}Exercises}{450}{section.16.27} \contentsline {section}{\numberline {16.28}Solutions}{451}{section.16.28} \contentsline {chapter}{\numberline {17}Key Configuration Files }{453}{chapter.17} \contentsline {subsection}{Objectives}{453}{section*.25} \contentsline {section}{\numberline {17.1}{\normalfont \ttfamily /etc/passwd}}{454}{section.17.1} \contentsline {section}{\numberline {17.2}{\normalfont \ttfamily /etc/passwd} (continued)}{455}{section.17.2} \contentsline {section}{\numberline {17.3}Editing {\normalfont \ttfamily /etc/passwd}}{456}{section.17.3} \contentsline {section}{\numberline {17.4}Other Changes To {\normalfont \ttfamily /etc/passwd}}{457}{section.17.4} \contentsline {section}{\numberline {17.5}{\normalfont \ttfamily /etc/group}}{458}{section.17.5} \contentsline {section}{\numberline {17.6}Editing {\normalfont \ttfamily /etc/group}}{459}{section.17.6} \contentsline {section}{\numberline {17.7}Important Note}{460}{section.17.7} \contentsline {section}{\numberline {17.8}Shadow Passwords}{461}{section.17.8} \contentsline {section}{\numberline {17.9}{\normalfont \ttfamily /etc/shadow}}{462}{section.17.9} \contentsline {section}{\numberline {17.10}Scheduling Jobs ({\normalfont \ttfamily Cron})}{463}{section.17.10} \contentsline {section}{\numberline {17.11}{\normalfont \ttfamily /etc/crontab}}{464}{section.17.11} \contentsline {section}{\numberline {17.12}{\ttfamily run-parts}}{465}{section.17.12} \contentsline {section}{\numberline {17.13}{\ttfamily logrotate}}{466}{section.17.13} \contentsline {section}{\numberline {17.14}Module Configuration}{467}{section.17.14} \contentsline {section}{\numberline {17.15}Modules Configuration --- `Options'}{468}{section.17.15} \contentsline {section}{\numberline {17.16}Mounting Filesystems}{469}{section.17.16} \contentsline {section}{\numberline {17.17}Runlevels}{470}{section.17.17} \contentsline {section}{\numberline {17.18}Single User Mode}{471}{section.17.18} \contentsline {section}{\numberline {17.19}Multi User Mode}{472}{section.17.19} \contentsline {section}{\numberline {17.20}Starting up and Shutting down}{473}{section.17.20} \contentsline {section}{\numberline {17.21}Changing runlevel}{474}{section.17.21} \contentsline {section}{\numberline {17.22}Initscripts}{475}{section.17.22} \contentsline {section}{\numberline {17.23}{\normalfont \ttfamily rcn.d}}{476}{section.17.23} \contentsline {section}{\numberline {17.24}Initscripts --- An example}{477}{section.17.24} \contentsline {section}{\numberline {17.25}Restarting Services}{478}{section.17.25} \contentsline {section}{\numberline {17.26}Exercises}{479}{section.17.26} \contentsline {section}{\numberline {17.27}Solutions}{480}{section.17.27}