Discover millions of ebooks, audiobooks, and so much more with a free trial

From $11.99/month after trial. Cancel anytime.

CentOS 8 Essentials: Learn to Install, Administer and Deploy CentOS 8 Systems
CentOS 8 Essentials: Learn to Install, Administer and Deploy CentOS 8 Systems
CentOS 8 Essentials: Learn to Install, Administer and Deploy CentOS 8 Systems
Ebook520 pages3 hours

CentOS 8 Essentials: Learn to Install, Administer and Deploy CentOS 8 Systems

Rating: 0 out of 5 stars

()

Read preview

About this ebook

Arguably one of the most highly regarded and widely used enterprise level operating systems available today is the CentOS 8 distribution. Not only is it considered to be among the most stable and reliable operating systems, it is also backed by the considerable resources and technical skills of Red Hat, Inc.

CentOS 8 Essentials is designed

LanguageEnglish
Release dateDec 11, 2019
ISBN9781951442088
CentOS 8 Essentials: Learn to Install, Administer and Deploy CentOS 8 Systems

Read more from Neil Smyth

Related to CentOS 8 Essentials

Related ebooks

System Administration For You

View More

Related articles

Reviews for CentOS 8 Essentials

Rating: 0 out of 5 stars
0 ratings

0 ratings0 reviews

What did you think?

Tap to rate

Review must be at least 10 words

    Book preview

    CentOS 8 Essentials - Neil Smyth

    centos8_front_cover_large.png

    CentOS 8 Essentials

    CentOS 8 Essentials

    ISBN-13: 978-1-951442-08-8

    © 2019 Neil Smyth / Payload Media, Inc. All Rights Reserved.

    This book is provided for personal use only. Unauthorized use, reproduction and/or distribution strictly prohibited. All rights reserved.

    The content of this book is provided for informational purposes only. Neither the publisher nor the author offers any warranties or representation, express or implied, with regard to the accuracy of information contained in this book, nor do they accept any liability for any loss or damage arising from any errors or omissions.

    This book contains trademarked terms that are used solely for editorial purposes and to the benefit of the respective trademark owner. The terms used within this book are not intended as infringement of any trademarks.

    Rev: 1.0

    Table of Contents

    1. Introduction

    1.1 Superuser Conventions

    1.2 Feedback

    1.3 Errata

    2. A Brief History of CentOS Linux

    2.1 What exactly is Linux?

    2.2 UNIX Origins

    2.3 Who Created Linux?

    2.4 The Early Days of Red Hat

    2.5 Red Hat Support

    2.6 Open Source

    2.7 The Fedora Project

    2.8 CentOS - The Free Alternative

    2.9 Summary

    3. Installing CentOS 8 on a Clean Disk Drive

    3.1 Obtaining the CentOS Installation Media

    3.2 Writing the ISO Installation Image to a USB Drive

    3.2.1 Linux

    3.2.2 macOS

    3.2.3 Windows

    3.3 Installing CentOS 8

    3.4 Partitioning a Disk for CentOS 8

    3.5 The Physical Installation

    3.6 Final Configuration Steps

    3.7 Installing Updates

    3.8 Displaying Boot Messages

    3.9 Summary

    4. Dual Booting CentOS 8 with Windows

    4.1 Partition Resizing

    4.2 Editing the CentOS 8 Boot Menu

    4.3 Changing the Default Boot Option

    4.4 Accessing the Windows Partition from CentOS 8

    4.5 Summary

    5. Allocating Windows Disk Partitions to CentOS 8

    5.1 Unmounting the Windows Partition

    5.2 Deleting the Windows Partitions from the Disk

    5.3 Formatting the Unallocated Disk Partition

    5.4 Mounting the New Partition

    5.5 Editing the Boot Menu

    5.6 Summary

    6. A Guided Tour of the GNOME 3 Desktop

    6.1 Installing the GNOME Desktop

    6.2 An Overview of the GNOME 3 Desktop

    6.3 Launching Activities

    6.4 Managing Windows

    6.5 Using Workspaces

    6.6 Calendar and Notifications

    6.7 Desktop Settings

    6.8 Summary

    7. An Overview of the CentOS 8 Cockpit Web Interface

    7.1 An Overview of Cockpit

    7.2 Installing and Enabling Cockpit

    7.3 Accessing Cockpit

    7.4 System

    7.5 Logs

    7.6 Storage

    7.7 Networking

    7.8 Virtual Machines

    7.9 Accounts

    7.10 Services

    7.11 Applications

    7.12 Diagnostic Reports

    7.13 Kernel Dump

    7.14 SELinux

    7.15 Software Updates

    7.16 Terminal

    7.17 Connecting to Multiple Servers

    7.18 Enabling Stored Metrics

    7.19 Summary

    8. Using the Bash Shell on CentOS 8

    8.1 What is a Shell?

    8.2 Gaining Access to the Shell

    8.3 Entering Commands at the Prompt

    8.4 Getting Information about a Command

    8.5 Bash Command-line Editing

    8.6 Working with the Shell History

    8.7 Filename Shorthand

    8.8 Filename and Path Completion

    8.9 Input and Output Redirection

    8.10 Working with Pipes in the Bash Shell

    8.11 Configuring Aliases

    8.12 Environment Variables

    8.13 Writing Shell Scripts

    8.14 Summary

    9. Managing CentOS 8 Users and Groups

    9.1 User Management from the Command-line

    9.2 User Management with Cockpit

    9.3 Summary

    10. Understanding CentOS 8 Software Installation and Management

    10.1 Repositories

    10.2 The BaseOS Repository

    10.3 The AppStream Repository

    10.4 Summary

    11. Configuring CentOS 8 systemd Units

    11.1 Understanding CentOS 8 systemd Targets

    11.2 Understanding CentOS 8 systemd Services

    11.3 CentOS 8 systemd Target Descriptions

    11.4 Identifying and Configuring the Default Target

    11.5 Understanding systemd Units and Unit Types

    11.6 Dynamically Changing the Current Target

    11.7 Enabling, Disabling and Masking systemd Units

    11.8 Working with systemd Units in Cockpit

    11.9 Summary

    12. CentOS 8 Network Management

    12.1 An Introduction to NetworkManager

    12.2 Installing and Enabling NetworkManager

    12.3 Basic nmcli Commands

    12.4 Working with Connection Profiles

    12.5 Interactive Editing

    12.6 Configuring NetworkManager Permissions

    12.7 Summary

    13. Basic CentOS 8 Firewall Configuration with firewalld

    13.1 An Introduction to firewalld

    13.1.1 Zones

    13.1.2 Interfaces

    13.1.3 Services

    13.1.4 Ports

    13.2 Checking firewalld Status

    13.3 Configuring Firewall Rules with firewall-cmd

    13.3.1 Identifying and Changing the Default Zone

    13.3.2 Displaying Zone Information

    13.3.3 Adding and Removing Zone Services

    13.3.4 Working with Port-based Rules

    13.3.5 Creating a New Zone

    13.3.6 Changing Zone/Interface Assignments

    13.3.7 Masquerading

    13.3.8 Adding ICMP Rules

    13.3.9 Implementing Port Forwarding

    13.4 Managing firewalld from the Cockpit Interface

    13.5 Managing firewalld using firewall-config

    13.6 Summary

    14. Configuring SSH Key-based Authentication on CentOS 8

    14.1 An Overview of Secure Shell (SSH)

    14.2 SSH Key-based Authentication

    14.3 Setting Up Key-based Authentication

    14.4 SSH Key-based Authentication from Linux and macOS Clients

    14.5 Managing Multiple Keys

    14.6 SSH Key-based Authentication from Windows 10 Clients

    14.7 SSH Key-based Authentication using PuTTY

    14.8 Generating a Private Key with PuTTYgen

    14.9 Installing the Public Key for a Google Cloud Instance

    14.10 Summary

    15. CentOS 8 Remote Desktop Access with VNC

    15.1 Secure and Insecure Remote Desktop Access

    15.2 Installing the GNOME Desktop Environment

    15.3 Installing VNC on CentOS 8

    15.4 Configuring the VNC Server

    15.5 Connecting to a VNC Server

    15.6 Establishing a Secure Remote Desktop Session

    15.7 Establishing a Secure Tunnel on Windows using PuTTY

    15.8 Shutting Down a Desktop Session

    15.9 Troubleshooting a VNC Connection

    15.10 Summary

    16. Displaying CentOS 8 Applications Remotely (X11 Forwarding)

    16.1 Requirements for Remotely Displaying CentOS 8 Applications

    16.2 Remotely Displaying a CentOS 8 Application

    16.3 Trusted X11 Forwarding

    16.4 Compressed X11 Forwarding

    16.5 Displaying Remote CentOS 8 Apps on Windows

    16.6 Summary

    17. Using NFS to Share CentOS 8 Files with Remote Systems

    17.1 Ensuring NFS Services are running on CentOS 8

    17.2 Configuring the CentOS 8 Firewall to Allow NFS Traffic

    17.3 Specifying the Folders to be Shared

    17.4 Accessing Shared CentOS 8 Folders

    17.5 Mounting an NFS Filesystem on System Startup

    17.6 Unmounting an NFS Mount Point

    17.7 Accessing NFS Filesystems in Cockpit

    17.8 Summary

    18. Sharing Files between CentOS 8 and Windows Systems with Samba

    18.1 Samba and Samba Client

    18.2 Installing Samba on a CentOS 8 System

    18.3 Configuring the CentOS 8 Firewall to Enable Samba

    18.4 Configuring the smb.conf File

    18.4.1 Configuring the [global] Section

    18.4.2 Configuring a Shared Resource

    18.4.3 Removing Unnecessary Shares

    18.5 Configuring SELinux for Samba

    18.6 Creating a Samba User

    18.7 Testing the smb.conf File

    18.8 Starting the Samba and NetBIOS Name Services

    18.9 Accessing Samba Shares

    18.10 Accessing Windows Shares from CentOS 8

    18.11 Summary

    19. An Overview of Virtualization Techniques

    19.1 Guest Operating System Virtualization

    19.2 Hypervisor Virtualization

    19.2.1 Paravirtualization

    19.2.2 Full Virtualization

    19.2.3 Hardware Virtualization

    19.3 Virtual Machine Networking

    19.4 Summary

    20. Installing KVM Virtualization on CentOS 8

    20.1 An Overview of KVM

    20.2 KVM Hardware Requirements

    20.3 Preparing CentOS 8 for KVM Virtualization

    20.4 Verifying the KVM Installation

    20.5 Summary

    21. Creating KVM Virtual Machines using Cockpit and virt-manager

    21.1 Installing the Cockpit Virtual Machines Module

    21.2 Creating a Virtual Machine in Cockpit

    21.3 Starting the Installation

    21.4 Creating a Virtual Machine using virt-manager

    21.5 Starting the Virtual Machine Manager

    21.6 Configuring the KVM Virtual System

    21.7 Starting the KVM Virtual Machine

    21.8 Summary

    22. Creating KVM Virtual Machines with virt-install and virsh

    22.1 Running virt-install to build a KVM Guest System

    22.2 An Example CentOS 8 virt-install Command

    22.3 Starting and Stopping a Virtual Machine from the Command-Line

    22.4 Creating a Virtual Machine from a Configuration File

    22.5 Summary

    23. Creating a CentOS 8 KVM Networked Bridge Interface

    23.1 Getting the Current Network Settings

    23.2 Creating a Network Bridge from the Command-Line

    23.3 Declaring the KVM Bridged Network

    23.4 Using a Bridge Network in a Virtual Machine

    23.5 Creating a Bridge Network using nm-connection-editor

    23.6 Summary

    24. Managing KVM using the virsh Command-Line Tool

    24.1 The virsh Shell and Command-Line

    24.2 Listing Guest System Status

    24.3 Starting a Guest System

    24.4 Shutting Down a Guest System

    24.5 Suspending and Resuming a Guest System

    24.6 Saving and Restoring Guest Systems

    24.7 Rebooting a Guest System

    24.8 Configuring the Memory Assigned to a Guest OS

    24.9 Summary

    25. An Introduction to Linux Containers

    25.1 Linux Containers and Kernel Sharing

    25.2 Container Uses and Advantages

    25.3 CentOS 8 Container Tools

    25.4 The Docker Registry

    25.5 Container Networking

    25.6 Summary

    26. Working with Containers on CentOS 8

    26.1 Pulling a Container Image

    26.2 Running the Image in a Container

    26.3 Managing a Container

    26.4 Saving a Container to an Image

    26.5 Removing an Image from Local Storage

    26.6 Removing Containers

    26.7 Building a Container with Buildah

    26.8 Building a Container from Scratch

    26.9 Container Bridge Networking

    26.10 Summary

    27. Setting Up a CentOS 8 Web Server

    27.1 Requirements for Configuring a CentOS 8 Web Server

    27.2 Installing the Apache Web Server Packages

    27.3 Configuring the Firewall

    27.4 Port Forwarding

    27.5 Starting the Apache Web Server

    27.6 Testing the Web Server

    27.7 Configuring the Apache Web Server for Your Domain

    27.8 The Basics of a Secure Web Site

    27.9 Configuring Apache for HTTPS

    27.10 Obtaining an SSL Certificate

    27.11 Summary

    28. Configuring a CentOS 8 Postfix Email Server

    28.1 The structure of the Email System

    28.1.1 Mail User Agent

    28.1.2 Mail Transfer Agent

    28.1.3 Mail Delivery Agent

    28.1.4 SMTP

    28.1.5 SMTP Relay

    28.2 Configuring a CentOS 8 Email Server

    28.3 Postfix Pre-Installation Steps

    28.4 Firewall/Router Configuration

    28.5 Installing Postfix on CentOS 8

    28.6 Configuring Postfix

    28.7 Configuring DNS MX Records

    28.8 Starting Postfix on a CentOS 8 System

    28.9 Testing Postfix

    28.10 Sending Mail via an SMTP Relay Server

    28.11 Summary

    29. Adding a New Disk Drive to a CentOS 8 System

    29.1 Mounted File Systems or Logical Volumes

    29.2 Finding the New Hard Drive

    29.3 Creating Linux Partitions

    29.4 Creating a File System on a CentOS 8 Disk Partition

    29.5 An Overview of Journaled File Systems

    29.6 Mounting a File System

    29.7 Configuring CentOS 8 to Automatically Mount a File System

    29.8 Adding a Disk Using Cockpit

    29.9 Summary

    30. Adding a New Disk to a CentOS 8 Volume Group and Logical Volume

    30.1 An Overview of Logical Volume Management (LVM)

    30.1.1 Volume Group (VG)

    30.1.2 Physical Volume (PV)

    30.1.3 Logical Volume (LV)

    30.1.4 Physical Extent (PE)

    30.1.5 Logical Extent (LE)

    30.2 Getting Information about Logical Volumes

    30.3 Adding Additional Space to a Volume Group from the Command-Line

    30.4 Adding Additional Space to a Volume Group using Cockpit

    30.5 Summary

    31. Adding and Managing CentOS 8 Swap Space

    31.1 What is Swap Space?

    31.2 Recommended Swap Space for CentOS 8

    31.3 Identifying Current Swap Space Usage

    31.4 Adding a Swap File to a CentOS 8 System

    31.5 Adding Swap as a Partition

    31.6 Adding Space to a CentOS 8 LVM Swap Volume

    31.7 Adding Swap Space to the Volume Group

    31.8 Summary

    Index

    1. Introduction

    CentOS 8 Essentials is designed to provide detailed information on the installation, use and administration of the distribution. For beginners, the book covers topics such as operating system installation, the basics of the GNOME desktop environment, configuring email and web servers and installing packages and system updates using App Streams. Additional installation topics such as dual booting with Microsoft Windows are also covered, together with all important security topics such as configuring a firewall and user and group administration.

    For the experienced user, topics such as remote desktop access, the Cockpit web interface, logical volume management (LVM), disk partitioning, swap management, KVM virtualization, Secure Shell (SSH), Linux Containers and file sharing using both Samba and NFS are covered in detail to provide a thorough overview of this enterprise class operating system.

    1.1 Superuser Conventions

    CentOS 8, in common with Linux in general, has two types of user account, one being a standard user account with restricted access to many of the administrative files and features of the operating system, and the other a superuser (root) account with elevated privileges. Typically, a user can gain root access either by logging in as the root user, or using the su - command and entering the root password. In the following example, a user is gaining root access via the su - command:

    [neil@centos8-demo ~]$ su -

    Password:

    [root@centos8-demo ~]#

    Note that the command prompt for a regular user ends with a $ sign while the root user has a # character. When working with the command-line, this is a useful indication as to whether or not you are currently issuing commands as the root user.

    Alternatively, a single command requiring root privileges may be executed by a non-root user via the sudo command. Consider the following attempt to update the operating system with the latest patches and packages:

    [neil@centos8-demo ~]$ dnf update

    Not root, Subscription Management repositories not updated

    Error: This command has to be run under the root user.

    Optionally, user accounts may be configured so that they have access to root level privileges. Instead of using the su - command to first gain root access, user accounts with administration privileges are able to run otherwise restricted commands using sudo.

    [neil@centos8-demo]$ sudo dnf update

    We trust you have received the usual lecture from the local System

    Administrator. It usually boils down to these three things:

        #1) Respect the privacy of others.

        #2) Think before you type.

        #3) With great power comes great responsibility.

    [sudo] password for neil:

    Updating Subscription Management repositories.

    .

    .

    The reason for raising this issue so early in the book is that many of the command-line examples outlined in this book will require root privileges. Rather than repetitively preface every command-line example with directions to run the command as root, the command prompt at the start of the line will be used to indicate whether or not the command needs to be performed as root. If the command can be run as a regular user, the command will be prefixed with a $ command prompt as follows:

    $ date

    If, on the other hand, the command requires root privileges, the command will be preceded by a # command prompt:

    # dnf install openssh

    1.2 Feedback

    We want you to be satisfied with your purchase of this book. If you find any errors in the book, or have any comments, questions or concerns please contact us at [email protected].

    1.3 Errata

    While we make every effort to ensure the accuracy of the content of this book, it is inevitable that a book covering a subject area of this size and complexity may include some errors and oversights. Any known issues with the book will be outlined, together with solutions, at the following URL:

    https://www.ebookfrenzy.com/errata/centos8.html

    In the event that you find an error not listed in the errata, please let us know by emailing our technical support team at [email protected]. They are there to help you and will work to resolve any problems you may encounter.

    2. A Brief History of CentOS Linux

    CentOS is one of a number of variants (also referred to as distributions) of the Linux operating system. It is based on the source code of the Red Hat Enterprise Linux distribution, developed by a U.S. company named Red Hat, Inc., based in Raleigh, North Carolina. The company was founded in the mid-1990s through the merger of two companies owned at the time by Marc Ewing and Bob Young. The origins of Linux, however, go back even further. This chapter will outline the history of both the Linux operating system and Red Hat, Inc. before explaining how CentOS fits into this picture.

    2.1 What exactly is Linux?

    Linux is an operating system in much the same way that Windows is an operating system (and there any similarities between Linux and Windows end). The term operating system is used to describe the software that acts as a layer between the hardware in a computer and the applications that we all run on a daily basis. When programmers write applications, they interface with the operating system to perform such tasks as writing files to the hard disk drive and displaying information on the screen. Without an operating system, every programmer would have to write code to directly access the hardware of the system. In addition, the programmer would have to be able to support every single piece of hardware ever created to be sure the application would work on every possible hardware configuration. Because the operating system handles all of this hardware complexity, application development becomes a much easier task. Linux is just one of a number of different operating systems available today.

    2.2 UNIX Origins

    To understand the history of Linux, we first have to go back to AT&T Bell Laboratories in the late 1960s. During this time AT&T had discontinued involvement in the development of a new operating system named Multics. Two AT&T engineers, Ken Thompson and Dennis Ritchie, decided to take what they had learned from the Multics project and create a new operating system named UNIX which quickly gained popularity and wide adoption both with corporations and academic institutions.

    A variety of proprietary UNIX implementations eventually came to market including those created by IBM (AIX), Hewlett-Packard (HP-UX) and Sun Microsystems (SunOS and Solaris). In addition, a UNIX-like operating system named MINIX was created by Andrew S. Tanenbaum designed for educational use with source code access provided to universities.

    2.3 Who Created Linux?

    The origins of Linux can be traced back to the work and philosophies of two people. At the heart of the Linux operating system is something called the kernel. This is the core set of features necessary for the operating system to function. The kernel manages the system’s resources and handles communication between the hardware and the applications. The Linux kernel was developed by Linus Torvalds who, taking a dislike to MS-DOS, and impatient for the availability of MINIX for the new Intel 80386 microprocessor, decided to write his own UNIX-like kernel. When he had finished the first version of the kernel, he released it under an open source license that enabled anyone to download the source code and freely use and modify it without having to pay Linus any money.

    Around the same time, Richard Stallman at the Free Software Foundation, a strong advocate of free and open source software, was working on an open source operating system of his own. Rather than focusing initially on the kernel, however, Stallman decided to begin by developing open source versions of all the UNIX tools, utilities and compilers necessary to use and maintain an operating system. By the time he had finished developing this infrastructure it seemed like the obvious solution was to combine his work with the kernel Linus had written to create a full operating system. This combination became known as GNU/Linux. Purists insist that Linux always be referred to as GNU/Linux (in fact, at one time, Richard Stallman refused to give press interviews to any publication which failed to refer to Linux as GNU/Linux). This is not unreasonable given that the GNU tools developed by the Free Software Foundation make up a significant and vital part of GNU/Linux. Unfortunately, most people and publications simply refer to Linux as Linux and this will probably always continue to be the case.

    2.4 The Early Days of Red Hat

    In 1993 Bob Young created a company named ACC Corporation which, according to Young, he ran from his wife’s sewing closet. The name ACC was intended to represent a catalog business but was also an abbreviation of a small business his wife ran called Antiques and Collectibles of Connecticut. Among the items sold through the ACC catalog business were Linux CDs and related open source software.

    Around the same time, Marc Ewing had created his own Linux distribution company which he named Red Hat Linux (after his propensity to wear a red baseball cap while at Carnegie Mellon University).

    In 1995, ACC acquired Red Hat, adopted the name Red Hat, Inc. and experienced rapid and significant growth. Bob Young stepped down as CEO shortly after the company went public in

    Enjoying the preview?
    Page 1 of 1