CentOS 8 Essentials: Learn to Install, Administer and Deploy CentOS 8 Systems
By Neil Smyth
()
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
Read more from Neil Smyth
Jetpack Compose 1.6 Essentials: Developing Android Apps with Jetpack Compose 1.6, Android Studio, and Kotlin Rating: 5 out of 5 stars5/5Android Studio Development Essentials Rating: 5 out of 5 stars5/5iOS 17 App Development Essentials: Developing iOS 17 Apps with Xcode 15, Swift, and SwiftUI Rating: 0 out of 5 stars0 ratingsAndroid Studio Giraffe Essentials - Java Edition: Developing Android Apps Using Android Studio 2022.3.1 and Java Rating: 0 out of 5 stars0 ratingsUbuntu 20.04 Essentials: A Guide to Ubuntu 20.04 Desktop and Server Editions Rating: 0 out of 5 stars0 ratingsUbuntu 23.04 Essentials: A Guide to Ubuntu 23.04 Desktop and Server Editions Rating: 5 out of 5 stars5/5Rocky Linux 9 Essentials: Learn to Install, Administer, and Deploy Rocky Linux 9 Systems Rating: 0 out of 5 stars0 ratingsRed Hat Enterprise Linux 9 Essentials: Learn to Install, Administer and Deploy RHEL 9 Systems Rating: 0 out of 5 stars0 ratingsJetpack Compose 1.3 Essentials: Developing Android Apps with Jetpack Compose 1.3, Android Studio, and Kotlin Rating: 0 out of 5 stars0 ratingsJetpack Compose 1.5 Essentials: Developing Android Apps with Jetpack Compose 1.5, Android Studio, and Kotlin Rating: 0 out of 5 stars0 ratingsAndroid 4.4 App Development Essentials Rating: 4 out of 5 stars4/5Android Studio Electric Eel Essentials - Kotlin Edition: Developing Android Apps Using Android Studio 2022.1.1 and Kotlin Rating: 0 out of 5 stars0 ratingsBuilding iOS 17 Apps with Xcode Storyboards: Develop iOS 17 Apps with Xcode 15 and Swift Rating: 0 out of 5 stars0 ratingsUbuntu 22.04 Essentials: A Guide to Ubuntu 22.04 Desktop and Server Editions Rating: 0 out of 5 stars0 ratingsiOS 18 App Development Essentials: Developing iOS Apps with SwiftUI, Swift, and Xcode 16 Rating: 0 out of 5 stars0 ratingsAndroid Studio Ladybug Essentials - Java Edition: Developing Android Apps Using Android Studio Ladybug and Java Rating: 0 out of 5 stars0 ratingsSwiftUI Essentials - iOS Edition: Learn to Develop iOS Apps Using SwiftUI, Swift 5 and Xcode 11 Rating: 0 out of 5 stars0 ratingsAndroid Studio Jellyfish Essentials - Kotlin Edition: Developing Android Apps Using Android Studio 2023.3.1 and Kotlin Rating: 0 out of 5 stars0 ratingsAndroid Studio Koala Essentials - Java Edition: A guide to developing Android apps using Android Studio Koala Feature Drop and Java Rating: 0 out of 5 stars0 ratingsAndroid Studio Hedgehog Essentials - Kotlin Edition: Developing Android Apps Using Android Studio 2023.1.1 and Kotlin Rating: 0 out of 5 stars0 ratingsAndroid Studio Iguana Essentials - Java Edition: Developing Android Apps Using Android Studio 2023.2.1 and Java Rating: 0 out of 5 stars0 ratingsAndroid Studio Electric Eel Essentials - Java Edition: Developing Android Apps Using Android Studio 2022.1.1 and Java Rating: 0 out of 5 stars0 ratingsiOS 16 App Development Essentials - UIKit Edition: Learn to Develop iOS 16 Apps with Xcode 14 and Swift Rating: 0 out of 5 stars0 ratingsAndroid Studio Hedgehog Essentials - Java Edition: Developing Android Apps Using Android Studio 2023.1.1 and Java Rating: 0 out of 5 stars0 ratingsAlmaLinux 9 Essentials: Learn to Install, Administer, and Deploy Rocky Linux 9 Systems Rating: 0 out of 5 stars0 ratings
Related to CentOS 8 Essentials
Related ebooks
Virtualization Essentials Rating: 0 out of 5 stars0 ratingsMicrosoft Windows Server Administration Essentials Rating: 0 out of 5 stars0 ratingsUbuntu 18.04 Essentials: Learn to Install, Administer and Use Ubuntu 18.04 Systems Rating: 0 out of 5 stars0 ratingsMCSA Windows Server 2012 R2 Complete Study Guide: Exams 70-410, 70-411, 70-412, and 70-417 Rating: 0 out of 5 stars0 ratingsRocky Linux 9 Essentials: Learn to Install, Administer, and Deploy Rocky Linux 9 Systems Rating: 0 out of 5 stars0 ratingsMastering Windows Server 2012 R2 Rating: 5 out of 5 stars5/5Mastering Linux System Administration Rating: 0 out of 5 stars0 ratingsUnderstanding TCP/IP Rating: 4 out of 5 stars4/5Ubuntu 23.04 Essentials: A Guide to Ubuntu 23.04 Desktop and Server Editions Rating: 5 out of 5 stars5/5Continuous Integration in .NET Rating: 0 out of 5 stars0 ratingsCentOS 7 Server Deployment Cookbook Rating: 0 out of 5 stars0 ratingsSystem Center 2012 R2 Virtual Machine Manager Cookbook Rating: 0 out of 5 stars0 ratingsWAN Survival Guide: Strategies for VPNs and Multiservice Networks Rating: 0 out of 5 stars0 ratingsRed Hat Certified Architect A Complete Guide - 2020 Edition Rating: 0 out of 5 stars0 ratingsVMware For New Admins - Upgrade: VMware Admin Series, #3 Rating: 0 out of 5 stars0 ratingsEVPN For VxLAN A Complete Guide - 2020 Edition Rating: 0 out of 5 stars0 ratingsSecurity Fundamentals Rating: 0 out of 5 stars0 ratingsWireless Security Architecture: Designing and Maintaining Secure Wireless for Enterprise Rating: 0 out of 5 stars0 ratingsNetstat A Complete Guide - 2021 Edition Rating: 0 out of 5 stars0 ratingsNetwork Troubleshooting A Complete Guide - 2020 Edition Rating: 0 out of 5 stars0 ratingsNetwork Designs A Complete Guide - 2019 Edition Rating: 0 out of 5 stars0 ratingsOpenStack Essentials Rating: 0 out of 5 stars0 ratingsInstant Migration from Windows Server 2008 and 2008 R2 to 2012 How-to Rating: 0 out of 5 stars0 ratingsPractical Threat Detection Engineering: A hands-on guide to planning, developing, and validating detection capabilities Rating: 0 out of 5 stars0 ratingsLinux Kernel Development A Complete Guide - 2020 Edition Rating: 0 out of 5 stars0 ratingsApplication Security A Complete Guide - 2019 Edition Rating: 0 out of 5 stars0 ratingsShell Scripting: Expert Recipes for Linux, Bash, and more Rating: 0 out of 5 stars0 ratingsMastering Embedded Linux Programming - Second Edition Rating: 5 out of 5 stars5/5Learning SaltStack - Second Edition Rating: 0 out of 5 stars0 ratings
System Administration For You
Linux Commands By Example Rating: 5 out of 5 stars5/5CompTIA A+ Complete Review Guide: Core 1 Exam 220-1101 and Core 2 Exam 220-1102 Rating: 5 out of 5 stars5/5Linux: Learn in 24 Hours Rating: 5 out of 5 stars5/5Linux Bible Rating: 0 out of 5 stars0 ratingsCybersecurity: The Beginner's Guide: A comprehensive guide to getting started in cybersecurity Rating: 5 out of 5 stars5/5PowerShell: A Comprehensive Guide to Windows PowerShell Rating: 4 out of 5 stars4/5The Complete Powershell Training for Beginners Rating: 0 out of 5 stars0 ratingsLearn PowerShell in a Month of Lunches, Fourth Edition: Covers Windows, Linux, and macOS Rating: 5 out of 5 stars5/5Mastering Windows PowerShell Scripting Rating: 4 out of 5 stars4/5Wordpress 2023 A Beginners Guide : Design Your Own Website With WordPress 2023 Rating: 0 out of 5 stars0 ratingsBash Command Line Pro Tips Rating: 5 out of 5 stars5/5Practical Data Analysis Rating: 4 out of 5 stars4/5Learn SQL Server Administration in a Month of Lunches Rating: 3 out of 5 stars3/5Ethical Hacking Rating: 4 out of 5 stars4/5Learn PowerShell Scripting in a Month of Lunches Rating: 0 out of 5 stars0 ratingsNetworking for System Administrators: IT Mastery, #5 Rating: 5 out of 5 stars5/5Git Essentials Rating: 4 out of 5 stars4/5Learn Windows PowerShell in a Month of Lunches Rating: 0 out of 5 stars0 ratingsCompTIA A+ Complete Practice Tests: Core 1 Exam 220-1101 and Core 2 Exam 220-1102 Rating: 0 out of 5 stars0 ratingsPowerShell: A Beginner's Guide to Windows PowerShell Rating: 4 out of 5 stars4/5Learning Microsoft Endpoint Manager: Unified Endpoint Management with Intune and the Enterprise Mobility + Security Suite Rating: 0 out of 5 stars0 ratingsMastering Linux Shell Scripting Rating: 4 out of 5 stars4/5Windows Security Basics: User Accounts Rating: 0 out of 5 stars0 ratingsMastering Veeam Backup & Replication.: Design and deploy a secure and resilient Veeam 12 platform using best practices Rating: 0 out of 5 stars0 ratingsLearn Git in a Month of Lunches Rating: 0 out of 5 stars0 ratingsDigital Legacy Plan: A guide to the personal and practical elements of your digital life before you die Rating: 0 out of 5 stars0 ratingsOperating Systems DeMYSTiFieD Rating: 0 out of 5 stars0 ratings
Reviews for CentOS 8 Essentials
0 ratings0 reviews
Book preview
CentOS 8 Essentials - Neil Smyth
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