Chapter 1: Starting with Linux
Understanding How Linux Differs from Other Operating Systems
Free-flowing UNIX culture at Bell Labs
Berkeley Software Distribution arrives
UNIX Laboratory and commercialization
GNU transitions UNIX to freedom
Linus builds the missing piece
Understanding How Linux Distributions Emerged
Choosing a Red Hat distribution
Using Red Hat Enterprise Linux
Choosing Ubuntu or another Debian distribution
Finding Professional Opportunities with Linux Today
Understanding how companies make money with Linux
Chapter 2: Creating the Perfect Linux Desktop
Understanding Linux Desktop Technology
Starting with the Fedora GNOME Desktop Live image
Setting up the GNOME 3 desktop
Starting with desktop applications
Managing files and folders with Nautilus
Installing and managing additional software
Using the Metacity window manager
Using the Applications and System menus
Adding an application launcher
Part II: Becoming a Linux Power User
About Shells and Terminal Windows
Recalling Commands Using Command History
Connecting and Expanding Commands
Expanding arithmetic expressions
Creating Your Shell Environment
Getting Information about Commands
Chapter 4: Moving around the Filesystem
Using Basic Filesystem Commands
Using Metacharacters and Operators
Using file-matching metacharacters
Using file-redirection metacharacters
Using brace expansion characters
Understanding File Permissions and Ownership
Changing permissions with chmod (numbers)
Changing permissions with chmod (letters)
Setting default file permission with umask
Moving, Copying, and Removing Files
Chapter 5: Working with Text Files
Deleting, copying, and changing text
Learning more about vi and vim
Using locate to find files by name
Finding files by date and time
Using ‘not’ and ‘or’ when finding files
Finding files and executing commands
Chapter 6: Managing Running Processes
Listing and changing processes with top
Listing processes with System Monitor
Managing Background and Foreground Processes
Using foreground and background commands
Killing and Renicing Processes
Killing processes with kill and killall
Using kill to signal processes by PID
Using killall to signal processes by name
Setting processor priority with nice and renice
Limiting Processes with cgroups
Chapter 7: Writing Simple Shell Scripts
Executing and debugging shell scripts
Special shell positional parameters
Performing arithmetic in shell scripts
Using programming constructs in shell scripts
The “while...do” and “until...do” loops
Trying some useful text manipulation programs
The general regular expression parser
Remove sections of lines of text (cut)
Translate or delete characters (tr)
Part III: Becoming a Linux System Administrator
Chapter 8: Learning System Administration
Understanding System Administration
Using Graphical Administration Tools
Using browser-based admin tools
Becoming root from the shell (su command)
Allowing administrative access via the GUI
Gaining administrative access with sudo
Exploring Administrative Commands, Configuration Files, and Log Files
Administrative configuration files
Administrative log files and systemd journal
Using journalctl to view the systemd journal
Managing log messages with rsyslogd
Using Other Administrative Accounts
Checking and Configuring Hardware
Installing Fedora from Live media
Installing Red Hat Enterprise Linux from Installation Media
Understanding Cloud-Based Installations
Installing Linux in the Enterprise
Exploring Common Installation Topics
Upgrading or installing from scratch
Installing Linux to run virtually
Using installation boot options
Boot options for disabling features
Boot options for video problems
Boot options for special installation types
Boot options for kickstarts and remote repositories
Understanding different partition types
Reasons for different partitioning schemes
Chapter 10: Getting and Managing Software
Managing Software on the Desktop
Going Beyond the Software Window
Understanding Linux RPM and DEB Software Packaging
Managing RPM Packages with YUM
2. Checking /etc/sysconfig/rhn/up2date (RHEL only)
3. Checking /etc/yum.repos.d/*.repo files
4. Downloading RPM packages and metadata from a YUM repository
5. RPM packages installed to Linux file system
6. Store YUM repository metadata to local RPM database
Using YUM with third-party software repositories
Managing software with the YUM command
Installing and removing packages
Maintaining your RPM package database and cache
Downloading RPMs from a yum repository
Installing, Querying, and Verifying Software with the rpm Command
Installing and removing packages with rpm
Managing Software in the Enterprise
Chapter 11: Managing User Accounts
Managing Users in the Enterprise
Setting permissions with Access Control Lists
Adding directories for users to collaborate
Creating group collaboration directories (set GID bit)
Creating restricted deletion directories (sticky bit)
Using the Authentication Configuration window
Chapter 12: Managing Disks and Filesystems
Understanding partition tables
Creating a single-partition disk
Creating a multiple-partition disk
Using Logical Volume Management Partitions
Using the fstab file to define mountable file systems
Using the mount command to mount file systems
Mounting a disk image in loopback
Using the mkfs Command to Create a Filesystem
Part IV: Becoming a Linux Server Administrator
CHAPTER 13: Understanding Server Administration
Starting with Server Administration
Checking the default configuration
Security settings in configuration files
Keep system software up to date
Check the filesystem for signs of crackers
Managing Remote Access with the Secure Shell Service
Starting the openssh-server service
Using ssh for remote execution
Copying files between systems with scp and rsync
Using key-based (passwordless) authentication
Enabling system logging with rsyslog
Understanding the rsyslog.conf file
Understanding the messages log file
Setting up and using a loghost with rsyslogd
Checking System Resources with sar
Displaying system space with df
Finding disk consumption with find
Managing Servers in the Enterprise
Chapter 14: Administering Networking
Configuring Networking for Desktops
Checking your network interfaces
Checking your network from NetworkManager
Checking your network from the command line
Configuring network interfaces
Configuring a network proxy connection
Configuring Networking from the Command Line
Understanding networking configuration files
Setting alias network interfaces
Setting up Ethernet channel bonding
Configuring Networking in the Enterprise
Configuring Linux as a DHCP server
Configuring Linux as a DNS server
Configuring Linux as a proxy server
Chapter 15: Starting and Stopping Services
Understanding the Initialization Daemon (init or systemd)
Understanding the classic init daemons
Understanding the Upstart init daemon
Learning Upstart init daemon basics
Learning Upstart's backward compatibility to SysVinit
Understanding systemd initialization
Learning systemd's backward compatibility to SysVinit
Checking the Status of Services
Checking services for SysVinit systems
Checking services for Upstart systems
Checking services for systemd systems
Stopping and Starting Services
Stopping and starting SysVinit services
Stopping and starting Upstart services
Stopping and starting systemd services
Stopping a service with systemd
Starting a service with systemd
Restarting a service with systemd
Reloading a service with systemd
Configuring persistent services for SysVinit
Configuring persistent services for Upstart
Configuring persistent services for systemd
Enabling a service with systemd
Disabling a service with systemd
Configuring a Default Runlevel or Target Unit
Configuring the SysVinit default runlevel
Configuring the default runlevel in Upstart
Configuring the default target unit for systemd
Adding New or Customized Services
Adding new services to SysVinit
Step 1: Create a new or customized service script file
Step 2: Add the service script to /etc/rc.d/init.d
Step 3: Add the service to runlevel directories
Adding new services to Upstart
Adding new services to systemd
Step 1: Create a new or customized service configuration unit file
Step 2: Move the service configuration unit file
Step 3: Add the service to the Wants directory
Chapter 16: Configuring a Print Server
Adding a printer automatically
Using web-based CUPS administration
Using the Print Settings window
Configuring local printers with the Print Settings window
Adding a remote UNIX (LDP/LPR) printer
Adding a Windows (SMB) printer
Configuring the CUPS server (cupsd.conf)
Configuring CUPS printer options manually
Configuring a shared CUPS printer
Configuring a shared Samba printer
Understanding smb.conf for printing
Chapter 17: Configuring a Web Server
Understanding the Apache Web Server
Getting and Installing Your Web Server
Understanding the httpd package
Apache file permissions and ownership
Understanding the Apache configuration files
Understanding default settings
Adding a virtual host to Apache
Allowing users to publish their own web content
Securing your web traffic with SSL/TLS
Understanding how SSL is configured
Generating an SSL key and self-signed certificate
Generating a certificate signing request
Troubleshooting Your Web Server
Checking for configuration errors
Accessing forbidden and server internal errors
Chapter 18: Configuring an FTP Server
Installing the vsftpd FTP Server
Opening up your firewall for FTP
Allowing FTP access in TCP wrappers
Configuring SELinux for your FTP server
Relating Linux file permissions to vsftpd
Setting up vsftpd for the Internet
Using FTP Clients to Connect to Your Server
Accessing an FTP server from Firefox
Accessing an FTP server with the lftp command
Chapter 19: Configuring a Windows File Sharing (Samba) Server
Starting the Samba (smb) service
Starting the NetBIOS (nmbd) name server
Stopping the Samba (smb) and NetBIOS (nmb) services
Configuring firewalls for Samba
Setting SELinux Booleans for Samba
Setting SELinux file contexts for Samba
Configuring Samba host/user permissions
Choosing Samba server settings
Configuring Samba user accounts
Creating a Samba shared folder
Configuring Samba in the smb.conf file
Configuring the [global] section
Configuring the [homes] section
Configuring the [printers] section
Creating custom shared directories
Accessing Samba shares in Linux
Accessing Samba shares in Windows
Chapter 20: Configuring an NFS File Server
Configuring the /etc/exports file
Access options in /etc/exports
User mapping options in /etc/exports
Exporting the shared filesystems
Opening up your firewall for NFS
Allowing NFS access in TCP wrappers
Configuring SELinux for your NFS server
Manually mounting an NFS filesystem
Mounting an NFS filesystem at boot time
Using autofs to mount NFS filesystems on demand
Automounting to the /net directory
Chapter 21: Troubleshooting Linux
Starting with System V init scripts
Starting from the firmware (BIOS or UEFI)
Troubleshooting the GRUB boot loader
Troubleshooting the initialization system
Troubleshooting System V initialization
Troubleshooting runlevel processes
Troubleshooting systemd initialization
Troubleshooting Software Packages
Fixing RPM databases and cache
Troubleshooting outgoing connections
Troubleshooting incoming connections
Check if the client can reach your system at all
Check if the service is available to the client
Check the firewall on the server
Check the service on the server
Troubleshooting in Rescue Mode
Part V: Learning Linux Security Techniques
Chapter 22: Understanding Basic Linux Security
Implementing physical security
Implementing disaster recovery
Limit access to the root user account
Setting expiration dates on temporary accounts
Setting and changing passwords
Enforcing best password practices
Understanding the password files and password hashes
Managing dangerous filesystem permissions
Managing software and services
Keeping up with security advisories
Detecting counterfeit new accounts and privileges
Detecting bad account passwords
Detecting viruses and rootkits
Chapter 23: Understanding Advanced Linux Security
Implementing Linux Security with Cryptography
Understanding encryption/decryption
Understanding cryptographic ciphers
Understanding cryptographic cipher keys
Understanding digital signatures
Implementing Linux cryptography
Encrypting Linux with miscellaneous tools
Using Encryption from the Desktop
Implementing Linux Security with PAM
Understanding the PAM authentication process
Understanding PAM control flags
Understanding PAM system event configuration files
Administering PAM on your Linux system
Managing PAM-aware application configuration files
Managing PAM system event configuration files
Implementing resources limits with PAM
Implementing time restrictions with PAM
Enforcing good passwords with PAM
Obtaining more information on PAM
Chapter 24: Enhancing Linux Security with SELinux
Understanding SELinux Benefits
Understanding How SELinux Works
Understanding type enforcement
Understanding multi-level security
Implementing SELinux security models
Understanding SELinux operational modes
Understanding SELinux security contexts
Understanding SELinux policy types
Understanding SELinux policy rule packages
Setting the SELinux policy type
Managing SELinux security contexts
Managing the user security context
Managing the file security context
Managing the process security context
Managing SELinux policy rule packages
Monitoring and Troubleshooting SELinux
Reviewing SELinux messages in the audit log
Reviewing SELinux messages in the messages log
Troubleshooting SELinux logging
Troubleshooting common SELinux problems
Using a nonstandard directory for a service
Using a nonstandard port for a service
Moving files and losing security context labels
Obtaining More Information on SELinux
Chapter 25: Securing Linux on a Network
Evaluating access to network services with nmap
Using nmap to audit your network services advertisements
Controlling access to network services
Understanding the iptables utility
Part VI: Extending Linux into the Cloud
Chapter 26: Using Linux for Cloud Computing
Overview of Linux and Cloud Computing
Cloud hypervisors (a.k.a. compute nodes)
Cloud deployment and configuration
Step 3: Install Linux on hypervisors
Step 4: Start services on the hypervisors
Step 5: Edit /etc/hosts or set up DNS
Step 1: Install Linux software
Step 4: Mount the NFS share on the hypervisors
Step 1: Get images to make virtual machines
Step 2: Check the network bridge
Step 3: Start Virtual Machine Manager (virt-manager)
Step 4: Check connection details
Step 5: Create a new virtual machine
Step 1: Identify other hypervisors
Step 2: Migrate running VM to another hypervisor
Chapter 27: Deploying Linux to the Cloud
Getting Linux to Run in a Cloud
Creating Linux Images for Clouds
Configuring and running a cloud-init cloud instance
Investigating the cloud instance
Expanding your cloud-init configuration
Adding ssh keys with cloud-init
Adding network interfaces with cloud-init
Adding software with cloud-init
Using cloud-init in enterprise computing
Using OpenStack to Deploy Cloud Images
Starting from the OpenStack Dashboard
Configuring your OpenStack virtual network
Configuring keys for remote access
Launching a virtual machine in OpenStack
Accessing the virtual machine via ssh