ubuntu_linux_unleashed_2021_edition

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 [email protected].

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

Part VI - Bonus Online Chapters

Table of Contents

  • Introduction

Part I - Getting Started

2 - Background Information and Resources

Part II - Desktop 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

ubuntu_linux_unleashed_2021_edition.txt · Last modified: 2024/04/28 03:22 by 127.0.0.1