Table of Contents
Ubuntu Linux Unleashed 2021 Edition
Return to Ubuntu, Ubuntu Topics, Ubuntu Bibliography, Linux Bibliography, IT Bibliography
Ubuntu Linux Unleashed 2021 Edition by Matthew Helmke
Covers 20.04, 20.10, and 21.04
Ubuntu Linux Unleashed 2021 Edition is filled with unique and advanced information for everyone who wants to make the most of the Ubuntu Linux operating system. This new edition has been thoroughly updated by a long-time Ubuntu user and early community leader to reflect the exciting new Ubuntu 20.04 LTS release, with a forthcoming online update mid-2021, at the halfway mark before the next LTS release comes out.
Linux writer Matthew Helmke covers all you need to know about Ubuntu 20.04 LTS installation, configuration, productivity, command-line usage, development, systems administration, server operations, networking, virtualization, cloud computing, DevOps, and more—including intermediate-to-advanced techniques you won’t find in any other book.
Helmke presents up-to-the-minute introductions to Ubuntu’s key productivity and web development tools, programming languages, hardware support, and more. You’ll find new or improved coverage of the Ubuntu desktop experience, common web servers and software stacks, an introduction to containers like Docker and Kubernetes, as well as a wealth of systems administration information that is stable and valuable over many years. Configure and use the Ubuntu desktop Get started with multimedia and productivity applications Manage Linux services, users, and software packages Administer and run Ubuntu from the command line Automate tasks and use shell scripting Provide secure remote access and configure a secure VPN Manage kernels and modules Administer file, print, email, proxy, LDAP, DNS, and HTTP servers (Apache, Nginx, or alternatives) Work with databases (SQL) and learn about NoSQL alternatives Get started with virtualization and cloud deployment, including information about containers Learn about options for managing large numbers of servers, including in the cloud Learn the basics about popular programming languages including Python, PHP, Perl, and gain an introduction to new alternatives such as Go and Rust
About the Author
Matthew Helmke has used Ubuntu since 2005. He has written about Linux for several magazines and websites, is a lead author of The Official Ubuntu Book, and has coauthored both A Practical Guide to Linux: Commands, Editors, and Shell Programming and The VMware Cookbook. In his day job, Matthew works for Gremlin (https://www.gremlin.com/) making the Internet more reliable. Matthew first used UNIX in 1987, while studying Lisp on a Vax at the university. He has run a business using only free and open source software, has consulted, and teaches as an adjunct professor for the University of Arizona. You can find out more about Matthew at https://www.linkedin.com/in/matthewhelmke/ or drop him a line with errata or suggestions at matthew@matthewhelmke.com.
Book details
- Publication Date: August 18, 2020
- Print Length: 2193 pages
- Publisher: Addison-Wesley Professional; 14th Edition (August 18, 2020)
- Simultaneous Device Usage : Up to 5 simultaneous devices, per publisher limits
Contents at a Glance
Part I - Getting Started
Part II - Desktop Ubuntu
Part III - System Administration
Part IV - Ubuntu as a Server
Part V - Programming Linux
Programming Linux - Programming Ubuntu - Programming on Ubuntu
- Note
- Bonus Chapters 42–44 can be accessed online at informit.com/title/9780136778851.
Part VI - Bonus Online Chapters
Table of Contents
- Introduction
Part I - Getting Started
- Before You Begin the Installation
2 - Background Information and Resources
Part II - Desktop Ubuntu
- 8 - Games on Ubuntu
-
==Part III - System Administration]] Ubuntu System Administration 9 - [[Managing Software
- [[Ubuntu Software
Using Synaptic for Software Management
Staying Up to Date
Working on the Command Line
Day-to-Day APT Usage
Finding Software
Using apt-get Instead of apt
Compiling Software from Source
Compiling from a Tarball
Compiling from Source from the Ubuntu Repositories
Configuration Management
dotdee
Ubuntu Core
Using the Snappy Package Manager
References
10 - [[Command-Line Beginner’s Class
What Is the Command Line?
Accessing the Command Line
Text-Based Console Login
Logging Out
Logging In and Out from a Remote Computer
User Accounts
Reading Documentation
Using Man Pages
Using apropros
Using whereis
Understanding the Linux File System Hierarchy
Essential Commands in /bin and /sbin
Configuration Files in /etc
User Directories: /home
Using the Contents of the /proc Directory to Interact with or Obtain Information from the Kernel
Working with Shared Data in the /usr Directory
Temporary File Storage in the /tmp Directory
Accessing Variable Data Files in the /var Directory
Navigating the Linux File System
Listing the Contents of a Directory with ls
Changing Directories with cd
Finding Your Current Directory with pwd
Working with Permissions
Assigning Permissions
Directory Permissions
Altering File Permissions with chmod
File Permissions with umask
File Permissions with chgrp
Changing File Permissions with chown
Understanding Set User ID, Set Group ID, and Sticky Bit Permissions
Setting Permissions with Access Control Lists
Working with Files
Creating a File with touch
Creating a Directory with mkdir
Deleting a Directory with rmdir
Deleting a File or Directory with rm
Moving or Renaming a File with mv
Copying a File with cp
Displaying the Contents of a File with cat
Displaying the Contents of a File with less
Using Wildcards and Regular Expressions
Working as Root
Understanding and Fixing sudo
Creating Users
Deleting Users
Shutting Down the System
Rebooting the System
Commonly Used Commands and Programs
References
11 - [[Command-Line Master Class, Part 1
Why Use the Command Line?
Using Basic Commands
Printing the Contents of a File with cat
Changing Directories with cd
Changing File Access Permissions with chmod
Copying Files with cp
Printing Disk Usage with du
Using echo
Finding Files by Searching with find
Searches for a String in Input with grep
Paging Through Output with less
Creating Links Between Files with ln
Finding Files from an Index with locate
Listing Files in the Current Directory with ls
Listing System Information with lsblk, lshw, lsmod, lspci, and neofetch
Reading Manual Pages with man
Making Directories with mkdir
Moving Files with mv
Renaming Files with rename
Deleting Files and Directories with rm
Sorting the Contents of a File with sort
Printing the Last Lines of a File with tail
Printing the Location of a Command with which
Downloading Files with wget
References
12 - [[Command-Line Master Class, Part 2
Redirecting Output and Input
stdin, stdout, stderr, and Redirection
Comparing Files
Finding Differences in Files with diff
Finding Similarities in Files with comm
Limiting Resource Use and Job Control
Listing Processes with ps
Listing Jobs with jobs
Running One or More Tasks in the Background
Moving Jobs to the Background or Foreground with bg and fg
Printing Resource Usage with top
Setting Process Priority with nice
Combining Commands
Pipes
Combining Commands with Boolean Operators
Running Separate Commands in Sequence
Process Substitution
Executing Jobs in Parallel
Using Environment Variables
Using Common Text Editors
Working with nano
Working with vi
Working with emacs
Working with sed and awk
Working with Compressed Files
Using Multiple Terminals with byobu
Doing a Polite System Reset Using REISUB
Fixing an Ubuntu System That Will Not Boot
Checking BIOS
Checking GRUB
Reinstalling GRUB
Using Recovery Mode
Reinstalling Ubuntu
Tips and Tricks
Running the Previous Command
Running Any Previous Command
Running a Previous Command That Started with Specific Letters
Running the Same Thing You Just Ran with a Different First Word
Viewing Your History and More
Doing Two or More Things
Using Shortcuts
Confining a Script to a Directory
Using Coreutils
Reading the Contents of the Kernel Ring Buffer with dmesg
References
13Managing Users
User Accounts
The Super User/Root User
User IDs and Group IDs
File Permissions
Managing Groups
Group Listing
Group Management Tools
Managing Users
User Management Tools
Adding New Users
Monitoring User Activity on the System
Managing Passwords
System Password Policy
The Password File
Shadow Passwords
Managing Password Security for Users
Changing Passwords in a Batch
Granting System Administrator Privileges to Regular Users
Temporarily Changing User Identity with the su Command
Granting Root Privileges on Occasion: The sudo Command
Disk Quotas
Implementing Quotas
Manually Configuring Quotas
Related Ubuntu Commands
References
14 - [[Automating Tasks and Shell Scripting
What Is a Shell?
Scheduling Tasks
Using at and batch to Schedule Tasks for Later
Using cron to Run Jobs Repeatedly
Using rtcwake to Wake Your Computer from Sleep Automatically
Basic Shell Control
The Shell Command Line
Shell Pattern-Matching Support
Redirecting Input and Output
Piping Data
Background Processing
Writing and Executing a Shell Script
Running the New Shell Program
Storing Shell Scripts for System-wide Access
Interpreting Shell Scripts Through Specific Shells
Using Variables in Shell Scripts
Assigning a Value to a Variable
Accessing Variable Values
Positional Parameters
A Simple Example of a Positional Parameter
Using Positional Parameters to Access and Retrieve Variables from the Command Line
Using a Simple Script to Automate Tasks
Built-in Variables
Special Characters
Comparison of Expressions in pdksh and bash
Comparing Expressions with tcsh
The for Statement
The while Statement
The until Statement
The repeat Statement (tcsh)
The select Statement (pdksh)
The shift Statement
The if Statement
The expr Statement
The case Statement
The break and exit Statements
Using Functions in Shell Scripts
References
15 - [[The Boot Process
Running Services at Boot
Beginning the Boot Loading Process
Loading the Linux Kernel
Starting and Stopping Services with systemd
Controlling Services at Boot with Administrative Tools
Troubleshooting Runlevel Problems
Boot-Repair
References
16 - [[System-Monitoring Tools
Console-Based Monitoring
Using the kill Command to Control Processes
Using Priority Scheduling and Control
Displaying Free and Used Memory with free
Disk Space
Disk Quotas
Checking Log Files
Rotating Log Files
Graphical Process- and System-Management Tools
System Monitor
Conky
Other Graphical Process- and System-Monitoring Tools
KDE Process- and System-Monitoring Tools
Enterprise Server Monitoring
References
17 - [[Backing Up
Choosing a Backup Strategy
Why Data Loss Occurs
Assessing Your Backup Needs and Resources
Evaluating Backup Strategies
Making the Choice
Choosing Backup Hardware and Media
External Hard Drive
Network Storage
Tape Drive Backups
Cloud Storage
Using Backup Software
tar: The Most Basic Backup Tool
The GNOME File Roller
The KDE ark Archiving Tool
Déjà Dup
Back In Time
Unison
Amanda
Alternative Backup Software
Copying Files
Copying Files Using tar
Compressing, Encrypting, and Sending tar Streams
Copying Files Using cp
Using rsync
Version Control for Configuration Files
System Rescue
The Ubuntu Rescue Disc
Restoring the GRUB2 Boot Loader
Saving Files from a Nonbooting Hard Drive
References
18 - [[Networking
Laying the Foundation: The localhost Interface
Checking for the Availability of the Loopback Interface
Configuring the Loopback Interface Manually
Checking Connections with ping, traceroute, and mtr
Networking with TCP/IP
TCP/IP Addressing
Using IP Masquerading in Ubuntu
Ports
IPv6 Basics
Network Organization
Subnetting
Subnet Masks
Broadcast, Unicast, and Multicast Addressing
Hardware Devices for Networking
Network Interface Cards
Network Cable
Hubs and Switches
Routers and Bridges
Initializing New Network Hardware
Using Network Configuration Tools
Command-Line Network Interface Configuration
Network Configuration Files
Using Graphical Configuration Tools
Dynamic Host Configuration Protocol
How DHCP Works
Activating DHCP at Installation and Boot Time
DHCP Software Installation and Configuration
Using DHCP to Configure Network Hosts
Other Uses for DHCP
Wireless Networking
Support for Wireless Networking in Ubuntu
Choosing from Among Available Wireless Protocols
Beyond the Network and onto the Internet
Common Configuration Information
Configuring Digital Subscriber Line Access
Understanding PPP over Ethernet
Configuring a PPPoE Connection Manually
Configuring Dial-up Internet Access
Troubleshooting Connection Problems
References
19 - [[Remote Access with SSH and VNC
Setting Up an SSH Server
SSH Tools
Using scp to Copy Individual Files Between Machines
Using sftp to Copy Many Files Between Machines
Using ssh-keygen to Enable Key-Based Logins
Virtual Network Computing
Guacamole
References
20 - [[Securing Your Machines
Understanding Computer Attacks
Assessing Your Vulnerability
Protecting Your Machine
Securing a Wireless Network
Passwords and Physical Security
Configuring and Using Tripwire
Securing Devices
Viruses
Configuring Your Firewall
AppArmor
Forming a Disaster Recovery Plan
References
21 - [[Performance Tuning
Storage Disk
Linux File Systems
The hdparm Command
File System Tuning
The tune2fs Command
The e2fsck Command
The badblocks Command
Disabling File Access Time
Kernel
Tuned
References
22 - [[Kernel and Module Management
The Linux Kernel
The Linux Source Tree
Types of Kernels
Managing Modules
When to Recompile
Kernel Versions
Obtaining the Kernel Sources
Patching the Kernel
Compiling the Kernel
Using xconfig to Configure the Kernel
Creating an Initial RAM Disk Image
When Something Goes Wrong
Errors During Compile
Runtime Errors, Boot Loader Problems, and Kernel Oops
References
Part IVUbuntu as a Server
23 - [[Sharing Files and Printers
Using Network File System
Installing and Starting or Stopping NFS
NFS Server Configuration
NFS Client Configuration
Putting Samba to Work
Manually Configuring Samba with /etc/samba/smb.conf
Testing Samba with the testparm Command
Starting, Stopping, and Restarting the smbd Daemon
Mounting Samba Shares
Network and Remote Printing with Ubuntu
Creating Network Printers
Using the CUPS GUI
Avoiding Printer Support Problems
References
24 - [[Common Web Server Stacks
LAMP
LEMP
MEAN
References
25 - [[Apache Web Server Management
About the Apache Web Server
Installing the Apache Server
Starting and Stopping Apache
Runtime Server Configuration Settings
Runtime Configuration Directives
Editing apache2.conf
Apache Multiprocessing Modules
Using .htaccess Configuration Files
File System Authentication and Access Control
Restricting Access with Require
Authentication
Final Words on Access Control
Apache Modules
mod_access
mod_alias
mod_asis
mod_auth
mod_auth_anon
mod_auth_dbm
mod_auth_digest
mod_autoindex
mod_cgi
mod_dir and mod_env
mod_expires
mod_headers
mod_include
mod_info and mod_log_config
mod_mime and mod_mime_magic
mod_negotiation
mod_proxy
mod_rewrite
mod_setenvif
mod_speling
mod_status
mod_ssl
mod_unique_id
mod_userdir
mod_usertrack
mod_vhost_alias
Virtual Hosting
Address-Based Virtual Hosts
Name-Based Virtual Hosts
Logging
HTTPS
References
26 - [[Nginx Web Server Management
About the Nginx Web Server
Installing the Nginx Server
Installing from the Ubuntu Repositories
Building the Source Yourself
Configuring the Nginx Server
Virtual Hosting
Setting Up PHP
Adding and Configuring Modules
HTTPS
Reference
27 - [[Other HTTP Servers
lighttpd
Yaws
Cherokee
Jetty
thttpd
Apache Tomcat
WildFly
Caddy
References
28 - [[Administering Relational Database Services
A Brief Review of Database Basics
How Relational Databases Work
Understanding SQL Basics
Creating Tables
Inserting Data into Tables
Retrieving Data from a Database
Choosing a Database: MySQL Versus PostgreSQL
Speed
Data Locking
ACID Compliance in Transaction Processing to Protect Data Integrity
SQL Subqueries
Procedural Languages and Triggers
Configuring MySQL
Setting a Password for the MySQL Root User
Creating a Database in MySQL
Configuring PostgreSQL
Initializing the Data Directory in PostgreSQL
Creating a Database in PostgreSQL
Creating Database Users in PostgreSQL
Deleting Database Users in PostgreSQL
Granting and Revoking Privileges in PostgreSQL
Database Clients
SSH Access to a Database
Local GUI Client Access to a Database
Web Access to a Database
The MySQL Command-Line Client
The PostgreSQL Command-Line Client
Graphical Clients
References
29 - [[NoSQL Databases
Key/Value Stores
Berkeley DB
Cassandra
etcd
Memcached and MemcacheDB
Redis
Riak
Scylla
Document Stores
CouchDB
MongoDB
BaseX
Wide Column Stores
BigTable
HBase
Graph Stores
Neo4j
OrientDB
HyperGraphDB
FlockDB
References
3 - [[Virtualization on Ubuntu
KVM
VirtualBox
VMware
Xen
References
3 - [[1 - [[Containers and Ubuntu
LXC and LXD
Docker
Kubernetes
References
3 - [[2 - [[Ubuntu and Cloud Computing
Why a Cloud?
Software as a Service (SaaS)
Platform as a Service (PaaS)
Infrastructure as a Service (IaaS)
Metal as a Service (MaaS)
Things to Consider Before You Make Any Decisions
Ubuntu on the Public Cloud
OpenStack
Amazon Web Services
Google Cloud
Microsoft Azure
Hybrid Clouds
Canonical-Specific Cloud Offerings
Juju
Mojo: Continuous Delivery for Juju
Landscape
References
3 - [[Managing Sets of Servers
Puppet
Chef
Ansible
SaltStack
CFEngine
Juju
Landscape
References
34 - [[Handling Email
How Email Is Sent and Received
The Mail Transport Agent
Choosing an MTA
The Mail Delivery Agent
The Mail User Agent
Basic Postfix Configuration and Operation
Configuring Masquerading
Using Smart Hosts
Setting Message Delivery Intervals
Mail Relaying
Forwarding Email with Aliases
Using Fetchmail to Retrieve Mail
Installing Fetchmail
Configuring Fetchmail
Choosing a Mail Delivery Agent
Procmail
Spamassassin
Squirrelmail
Virus Scanners
Autoresponders
References
35 - [[Proxying, Reverse Proxying, and Virtual Private Networks (VPNs)
What Is a Proxy Server?
Installing Squid
Configuring Clients
Access Control Lists
Specifying Client IP Addresses
Sample Configurations
Virtual Private Networks (VPNs)
Setting Up a VPN Client
Setting Up a VPN Server
References
36 - [[Lightweight Directory Access Protocol (LDAP)
Configuring the Server
Creating Your Schema
Populating Your Directory
Configuring Clients
LDAP Administration
References
37 - [[Name Serving with the Domain Name System (DNS)
Understanding Domain Names
DNS Servers
DNS Records
Setting Up a DNS Server with BIND
References
Part VProgramming Linux
38 - [[Using Programming Tools
Programming in C with Linux
Using the C Programming Project Management Tools Provided with Ubuntu
Building Programs with make
Using the autoconf Utility to Configure Code
Debugging Tools
Using the GNU C Compiler
Programming in Java with Linux
Graphical Development Tools
IDEs and SDKs
Using the KDevelop Client
The Glade Client for Developing in GNOME
Beginning Mobile Development for Android
Hardware
Linux Kernel
Libraries
Android Runtime
Application Framework
Applications
Installing Android Studio
Creating Your First Android Application
Version Control Systems
Managing Software Projects with Git
Managing Software Projects with Bazaar
Managing Software Projects with Subversion
Continuous Integration and Continuous Delivery and DevOps Tools
CI/CD Tools
Chaos Engineering
Canonical-created Tools
Launchpad
Ubuntu Make
Creating Snap Packages
Bikeshed and Other Tools
References
39 - [[Using Popular Programming Languages
Ada
Clojure
COBOL
D
Dart
Elixir
Elm
Erlang
Forth
Fortran
Go
Groovy
Haskell
Java
JavaScript
Kotlin
Lisp
Lua
Mono
OCaml
Perl
PHP
Python
Raku
Ruby
Rust
Scala
Scratch
Vala
References
40 - [[Helping with Ubuntu Development
Introduction to Ubuntu Development
Setting Up Your Development System
Install Basic Packages and Configure
Creating a Launchpad Account
Setting Up Your Environment to Work with Launchpad
Fixing Bugs and Packaging
References
41 - [[Helping with Ubuntu Testing and QA
Community Teams
Ubuntu Testing Team
Ubuntu QA Team
Bug Squad
References
Index
Note
Bonus Chapters 42–44 can be accessed online at informit.com/title/9780136778851.
Part VIBonus Online Chapters
42 - [[Using Perl
Using Perl with Linux
Perl Versions
A Simple Perl Program
Perl Variables and Data Structures
Perl Variable Types
Special Variables
Perl Operators
Comparison Operators
Compound Operators
Arithmetic Operators
Other Operators
Special String Constants
Conditional Statements: if/else and unless
if
unless
Looping
for
foreach
while
until
last and next
do … while and do … until
Regular Expressions
Access to the Shell
Modules and CPAN
Code Examples
Sending Mail
Purging Logs
Posting to Usenet
One-Liners
Command-Line Processing
References
43 - [[Using Python
Python on Linux
The Basics of Python
Numbers
More on Strings
Lists
Dictionaries
Conditionals and Looping
Functions
Object Orientation
Class and Object Variables
Constructors and Destructors
Class Inheritance
The Standard Library and the Python Package Index
References
44 - [[Using PHP
Introduction to PHP
Entering and Exiting PHP Mode
Variables
Arrays
Constants
References
Comments
Escape Sequences
Variable Substitution
Operators
Conditional Statements
Special Operators
Switching
Loops
Including Other Files
Basic Functions
Strings
Arrays
Files
Miscellaneous
Handling HTML Forms
Databases
References