Introduction xxv Part 1 Basic Admin Functions 1 Chapter 1 Understanding the Basics 3 What is Linux? 3 Looking into the Linux Kernel 4 The GNU Utilities 12 Linux User Interfaces 12 Linux Distributions 18 Core Linux Distributions 19 Specialized Linux Distributions 19 The Bottom Line 20 Chapter 2 Installing an Ubuntu Server 23 Pre-Installation Requirements 23 Hardware Requirements 24 Virtual Server Requirements 25 Finding the Software 26 Oracle VirtualBox 26 Ubuntu Server 26 Running the Installation 29 Oracle VirtualBox 29 Ubuntu Server 33 Checking the Installation 49 The Bottom Line 50 Chapter 3 Installing and Maintaining Software in Ubuntu 53 Exploring Package Management 53 Inspecting the Debian-Based Systems 54 Managing Packages with apt 54 Installing Software Packages with apt 56 Upgrading Software with apt 59 Uninstalling Software with apt 60 The apt Repositories 61 Using Snap Containers 62 Installing from Source Code 64 The Bottom Line 66 Chapter 4 Installing a Red Hat Server 69 Pre-Installation Requirements 69 Hardware Requirements 70 Virtual Server Requirements 71 Finding the Software 72 Oracle VirtualBox 72 CentOS 73 Running the Installation 76 Oracle VirtualBox 77 CentOS 77 Checking the Installation 96 The Bottom Line 97 Chapter 5 Installing and Maintaining Software in Red Hat 99 Exploring Red Hat Packages 99 Automated Package Management 100 Listing Installed Packages 100 Installing Software with dnf 102 Upgrading Software with dnf 104 Uninstalling Software with dnf 104 Handling Broken Dependencies 105 Working with RPM Repositories 106 Working Directly with Packages 107 Finding Package Files 107 Inspecting Package Files 108 Installing Package Files 109 Removing Package Files 110 Using Flatpak Containers 111 The Bottom Line 113 Chapter 6 Working with the Shell 115 Exploring the Shell 115 The Shell Prompt 116 The Shell Manual 117 Working with Commands 121 Entering Commands 121 Retrieving Past Commands 123 Redirecting Commands 125 Environment Variables 129 Global Environment Variables 129 User-Defined Environment Variables 131 The Bottom Line 133 Chapter 7 Exploring Linux File Management 135 Filesystem Navigation 135 The Linux Filesystem 135 Traversing Directories 138 Linux Files 139 Determining File Types 139 Filenames 140 Hidden Files 140 File Inodes 141 File and Directory Listing 142 Basic Listing 142 Modifying Listing Information 143 The Complete Parameter List 143 Directory Handling 146 Creating Directories 146 Deleting Directories 146 File Handling 147 Creating Files 147 Copying Files 148 Linking Files 150 Renaming Files 152 Deleting Files 152 File Features 154 Using Wildcards 154 Quoting 155 Case Sensitivity 156 Finding Files 156 The which Command 156 The locate Command 156 The whereis Command 157 The find Command 157 Archiving Files 159 Compressing Files 159 Creating Archive Files 160 Archiving Scenarios 161 The Bottom Line 163 Chapter 8 Working with Text Files 165 The vim Editor 165 Checking Your vim Editor Program 166 Using the vim Editor 167 The nano Editor 170 Working with Data Files 172 Sorting 172 Searching 175 Compressing 181 Archiving 182 The Bottom Line 187 Part 2 Intermediate Admin Functions 189 Chapter 9 Managing Hardware 191 Device Driver Modules 191 Listing Installed Modules 192 Installing New Modules 193 Removing Modules 196 Communicating with Devices 196 Device Interfaces 196 The /dev Directory 198 The /proc Directory 199 The /sys Directory 202 Working with Devices 203 Finding Devices 203 Working with PCI Cards 205 Working with USB Devices 206 Using Hot Pluggable Devices 207 Detecting Dynamic Devices 208 Working with Dynamic Devices 208 The Bottom Line 209 Chapter 10 Booting Linux 211 Understanding the Boot Process 211 Overview of the Boot Process 211 Watching the Boot Process 212 The Firmware Startup 212 The GRUB2 Bootloader 214 Configuring the GRUB2 Bootloader 215 Exploring the GRUB2 Configuration 215 Interacting with GRUB2 217 The systemd Initialization Process 219 Exploring Unit Files 220 Focusing on Service Unit Files 221 Focusing on Target Unit Files 225 Changing a Unit Configuration File 226 Changing the systemd Configuration File 227 Looking at systemctl 227 Jumping Targets 230 Analyzing with systemd 232 The Bottom Line 234 Chapter 11 Working with Storage Devices 235 Storage Basics 235 Drive Connections 235 Partitioning Drives 236 Automatic Drive Detection 236 Partitioning Tools 237 Working with fdisk 237 Working with gdisk 239 The GNU parted Command 241 Formatting Filesystems 243 Common Filesystem Types 243 Creating Filesystems 245 Mounting Filesystems 246 Manually Mounting Devices 246 Automatically Mounting Devices 247 Managing Filesystems 249 Retrieving Filesystem Stats 249 Filesystem Tools 250 Storage Alternatives 251 Multipath 251 Logical Volume Manager 251 Using RAID Technology 253 The Bottom Line 254 Chapter 12 Configuring Network Settings 255 Network Settings 255 Ubuntu Servers 256 Red Hat Servers 258 Using Network Command-Line Tools 260 NetworkManager Tools 260 Other Tools 262 Basic Network Troubleshooting 269 Sending Test Packets 269 Finding Host Information 271 Advanced Network Troubleshooting 273 The netstat Command 273 Examining Sockets 276 The Bottom Line 277 Chapter 13 Managing Users and Groups 279 Understanding Linux Permissions 279 Understanding Ownership 280 Controlling Access Permissions 282 Exploring Special Permissions 284 Managing Default Permissions 285 Using Access Control Lists 288 Managing User Accounts 290 Adding Accounts 290 Maintaining Accounts 298 Removing Accounts 301 Maintaining the Environment 302 Setting Environment Variables 302 Exploring User Entries 302 Exploring Global Entries 303 Managing Groups 304 Adding Groups 305 Removing Groups 306 The Bottom Line 307 Chapter 14 Working with Processes and Jobs 309 Looking at Processes 309 Monitoring Processes in Real Time 311 Managing Processes 314 Setting Priorities 314 Stopping Processes 315 Running Programs in Background Mode 317 Running in the Background 317 Running Multiple Background Jobs 318 Running Programs Without a Console 319 Job Control 320 Viewing Jobs 320 Restarting Stopped Jobs 322 Scheduling Jobs 323 Scheduling a Job Using the at Command 323 Scheduling Recurring Programs 326 The Bottom Line 328 Chapter 15 Managing Log Files 329 The systemd Journaling System 329 Configuring systemd-journald 330 Looking at Journal Files 331 Making the Journal Persistent 332 Viewing Journal Entries 332 Maintaining the Journal 335 Viewing Different Journal Files 337 Protecting Journal Files 337 Making Journal Entries 337 The rsyslog Legacy System 338 The syslog Protocol 338 Basic Logging Using rsyslogd 340 Layering Your Logging 342 Making Log Entries 343 Finding Event Messages 344 The Bottom Line 344 Chapter 16 Managing Printers 347 The Common Unix Printing System 347 Printer Drivers 347 Web Interface 348 Command-Line Commands 348 Printer Sharing 349 Printer Classes 350 Installing and Configuring CUPS 350 Installing CUPS 351 Preparing the Server to Use CUPS 354 Using CUPS 356 Administration Functions 356 Managing Printers and Jobs in CUPS 360 The Bottom Line 361 Part 3 Advanced Admin Functions 363 Chapter 17 Exploring Ubuntu Security 365 Locking Down Root 365 Looking at Linux Account Types 366 Gaining Super User Privileges 367 Using OpenSSH on Ubuntu 369 Exploring Basic SSH Concepts 370 Configuring SSH 372 Generating SSH Keys 373 Authenticating with SSH Keys 374 The AppArmor System 376 Network Security Using Firewalls 380 Understanding UFW 380 Configuring UFW 381 The Bottom Line 385 Chapter 18 Exploring Red Hat Security 387 Working with Root Access 387 Keeping Track of Root Logins 388 Disabling Root Access from SSH 388 Enabling Automa.
Mastering Linux System Administration