Description

Book Synopsis


Table of Contents

Acknowledgments ix

Introduction xxix

Part I: Getting Started 1

Chapter 1: Starting with Linux 3

Understanding What Linux is 4

Understanding How Linux Differs from Other Operating Systems 6

Exploring Linux History 7

Free-flowing UNIX culture at Bell Labs 7

Commercial UNIX 9

Berkeley Software Distribution arrives 9

UNIX Laboratory and commercialization 10

GNU transitions UNIX to freedom 11

BSD loses some steam 13

Linus builds the missing piece 13

OSI open source definition 14

Understanding How Linux Distributions Emerged 16

Understanding Red Hat 17

Understanding Ubuntu and other Debian distributions 17

Finding Professional Opportunities with Linux Today 18

Understanding how companies make money with Linux 19

Summary 20

Chapter 2: Creating the Perfect Linux Desktop 21

Understanding Linux Desktop Technology 22

Starting with the GNOME 3 Desktop Live Image 24

Using the GNOME 3 Desktop 25

After the computer boots up 25

Navigating with the mouse 25

Navigating with the keyboard 30

Setting up the GNOME 3 desktop 31

Extending the GNOME 3 desktop 31

Using GNOME shell extensions 32

Using the GNOME Tweak Tool 33

Starting with desktop applications 33

Managing files and folders with Nautilus 33

Installing and managing additional software 35

Playing music with Rhythmbox 37

Stopping the GNOME 3 desktop 37

Using the Unity Graphical Shell with the GNOME Desktop 37

Using the Metacity window manager 38

Changing GNOME’s appearance 40

Using the panels 40

Adding a drawer 41

Changing panel properties 41

Summary 42

Exercises 42

Part II: Becoming a Linux Power User 43

Chapter 3: Using the Shell 45

About Shells and Terminal Windows 46

Using the shell prompt 47

Using a Terminal window 48

Using virtual consoles 49

Choosing Your Shell 49

Running Commands 50

Understanding command syntax 51

Locating commands 53

Recalling Commands Using Command History 56

Command-line editing 56

Command-line completion 58

Command-line recall 59

Connecting and Expanding Commands 61

Piping between commands 62

Sequential commands 62

Background commands 63

Expanding commands 63

Expanding arithmetic expressions 63

Expanding variables 64

Using Shell Variables 64

Creating and using aliases 66

Exiting the shell 67

Creating Your Shell Environment 67

Configuring your shell 67

Setting your prompt 68

Adding environment variables 70

Getting Information about Commands 71

Summary 74

Exercises 74

Chapter 4: Moving Around the Filesystem 77

Using Basic Filesystem Commands 80

Using Metacharacters and Operators 82

Using fi le-matching metacharacters 82

Using fi le-redirection metacharacters 84

Using brace expansion characters 85

Listing Files and Directories 86

Understanding File Permissions and Ownership 90

Changing permissions with chmod (numbers) 91

Changing permissions with chmod (letters) 92

Setting default file permission with umask 93

Changing file ownership 93

Moving, Copying, and Removing Files 94

Summary 95

Exercises 96

Chapter 5: Working with Text Files 97

Editing Files with vim and vi 97

Starting with vi 99

Adding text 99

Moving around in the text 100

Deleting, copying, and changing text 101

Pasting (putting) text 102

Repeating commands 102

Exiting vi 102

Skipping around in the file 103

Searching for text 103

Using ex mode 104

Learning more about vi and vim 104

Finding Files 105

Using locate to find files by name 105

Searching for files with find 107

Finding files by name 108

Finding files by size 108

Finding files by user 109

Finding files by permission 109

Finding files by date and time 110

Using “not” and “or” when finding files 111

Finding files and executing commands 112

Searching in files with grep 113

Summary 115

Exercises 115

Chapter 6: Managing Running Processes 117

Understanding Processes 117

Listing Processes 118

Listing processes with ps 118

Listing and changing processes with top 120

Listing processes with System Monitor 122

Managing Background and Foreground Processes 124

Starting background processes 124

Using foreground and background commands 125

Killing and Renicing Processes 126

Killing processes with kill and killall 126

Using kill to signal processes by PID 127

Using killall to signal processes by name 128

Setting processor priority with nice and renice 128

Limiting Processes with cgroups 129

Summary 131

Exercises 131

Chapter 7: Writing Simple Shell Scripts 133

Understanding Shell Scripts 133

Executing and debugging shell scripts 134

Understanding shell variables 135

Special shell positional parameters 136

Reading in parameters 137

Parameter expansion in bash 137

Performing arithmetic in shell scripts 138

Using programming constructs in shell scripts 139

The “if then” statements 139

The case command 142

The “for do” loop 143

The “while do” and “until do” loops 144

Trying some useful text manipulation programs 145

The global regular expression print 145

Remove sections of lines of text (cut) 145

Translate or delete characters (tr) 146

The stream editor (sed) 146

Using simple shell scripts 147

Telephone list 147

Backup script 148

Summary 149

Exercises 149

Part III: Becoming a Linux System Administrator 151

Chapter 8: Learning System Administration 153

Understanding System Administration 153

Using Graphical Administration Tools 155

Using Cockpit browser-based administration 155

Using other browser-based admin tools 157

Invoking Administration Privileges 158

Becoming root from the shell 158

Gaining temporary admin access with sudo 159

Exploring Administrative Commands, Configuration Files, and Log Files 161

Administrative commands 161

Administrative configuration files 162

Administrative log files and systemd journal 165

Using journalctl to view the systemd journal 165

Managing log messages with rsyslogd 166

Using Other Administrative Accounts 167

Checking and Configuring Hardware 167

Checking your hardware 168

Managing removable hardware 171

Working with loadable modules 172

Listing loaded modules 172

Loading modules 173

Removing modules 174

Summary 174

Exercises 175

Chapter 9: Installing Linux 177

Choosing a Computer 178

Installing Ubuntu Desktop 180

Installing Ubuntu Server 185

Understanding Cloud-Based Installations 188

Installing Linux in the Enterprise 189

Exploring Common Installation Topics 189

Upgrading or installing from scratch 189

Dual booting 190

Installing Linux to run virtually 191

Using installation boot options 192

Boot options for disabling features 192

Boot options for video problems 193

Boot options for special installation types 193

Using specialized storage 194

Partitioning hard drives 195

Understanding different partition types 196

Tips for creating partitions 196

Using the GRUB 2 boot loader 198

Summary 199

Exercises 199

Chapter 10: Getting and Managing Software 201

Managing Software on the Desktop 201

Going Beyond the Software Window 203

Understanding Linux Software Packaging 204

Working with Debian Packaging 205

APT basics 205

Working with APT repositories 209

Working with dpkg 211

Summary 214

Exercises 214

Chapter 11: Managing User Accounts 215

Creating User Accounts 215

Adding users with adduser 218

Setting user defaults 220

Modifying users with usermod 222

Deleting users with deluser 223

Understanding Group Accounts 223

Using group accounts 224

Creating group accounts 225

Managing Users in the Enterprise 225

Setting permissions with Access Control Lists 226

Setting ACLs with setfacl 227

Setting default ACLs 228

Enabling ACLs 229

Adding directories for users to collaborate 231

Creating group collaboration directories (set GID bit) 231

Creating restricted deletion directories (sticky bit) 233

Centralizing User Accounts 233

Summary 234

Exercises 234

Chapter 12: Managing Disks and Filesystems 237

Understanding Disk Storage 237

Partitioning Hard Disks 239

Understanding partition tables 239

Viewing disk partitions 240

Creating a single-partition disk 241

Creating a multiple-partition disk 245

Using Logical Volume Manager Partitions 249

Checking an existing LVM 249

Creating LVM logical volumes 252

Growing LVM logical volumes 254

Mounting Filesystems 254

Supported filesystems 255

Enabling swap areas 257

Disabling swap area 258

Using the fstab file to define mountable filesystems 258

Using the mount command to mount filesystems 261

Mounting a disk image in loopback 262

Using the umount command 262

Using the mkfs Command to Create a Filesystem 263

Managing Storage with Cockpit 264

Summary 265

Exercises 266

Part IV: Becoming a Linux Server Administrator 267

Chapter 13: Understanding Server Administration 269

Getting Started with Server Administration 270

Step 1: Install the server 270

Step 2: Configure the server 272

Using configuration files 272

Checking the default configuration 272

Step 3: Start the server 272

Step 4: Secure the server 274

Password protection 274

Firewalls 274

TCP Wrappers 274

AppArmor 275

Security settings in configuration files 275

Step 5: Monitor the server 275

Configure logging 275

Run system activity reports 276

Watch activity live with Cockpit 276

Keep system software up to date 277

Check the filesystem for signs of crackers 277

Checking and Setting Servers 277

Managing Remote Access with the Secure Shell Service 277

Starting the openssh-server service 278

Using SSH client tools 278

Using ssh for remote login 279

Using SSH for remote execution 280

Copying files between systems with scp and rsync 281

Interactive copying with sftp 284

Using key-based (passwordless) authentication 285

Configuring System Logging 286

Enabling system logging with rsyslog 287

Understanding the rsyslog.conf file 287

Understanding log messages 289

Setting up and using a loghost with rsyslogd 289

Watching logs with logwatch 290

Checking System Resources with sar 291

Checking System Space 293

Displaying system space with df 293

Checking disk usage with du 294

Finding disk consumption with find 294

Managing Servers in the Enterprise 295

Summary 296

Exercises 296

Chapter 14: Administering Networking 299

Configuring Networking for Desktops 300

Checking your network interfaces 302

Checking your network from NetworkManager 302

Checking your network from Cockpit 303

Checking your network from the command line 304

Configuring network interfaces 308

Setting IP addresses manually 308

Setting IP address aliases 309

Setting routes 310

Configuring a network proxy connection 311

Configuring Networking from the Command Line 312

Configure networking with nmtui 312

Editing a NetworkManager TUI connection 313

Understanding networking configuration files 314

Other networking files 315

Setting alias network interfaces 318

Setting up Ethernet channel bonding 319

Setting custom routes 320

Configuring Networking in the Enterprise 321

Configuring Linux as a router 321

Configuring Linux as a DHCP server 322

Configuring Linux as a DNS server 322

Configuring Linux as a proxy server 323

Summary 323

Exercises 324

Chapter 15: Starting and Stopping Services 327

Understanding the Initialization Daemon (init or systemd) 328

Understanding the classic init daemons 329

Understanding systemd initialization 335

Learning systemd basics 335

Learning systemd’s backward compatibility to SysVinit 341

Checking the Status of Services 343

Checking services for SysVinit systems 343

Stopping and Starting Services 346

Stopping and starting SysVinit services 346

Stopping a service with systemd 347

Starting a service with systemd 348

Restarting a service with systemd 348

Reloading a service with systemd 349

Enabling Persistent Services 350

Configuring persistent services for SysVinit 350

Enabling a service with systemd 351

Disabling a service with systemd 352

Configuring a Default Runlevel or Target Unit 353

Configuring the SysVinit default runlevel 353

Adding New or Customized Services 354

Adding new services to SysVinit 355

Step 1: Create a new or customized service script file 355

Step 2: Add the service script to /etc/rc.d/init.d 356

Step 3: Set appropriate permission on the script 357

Step 4: Add the service to runlevel directories 357

Adding new services to systemd 357

Step 1: Create a new or customized service configuration unit file 358

Step 2: Move the service configuration unit file 358

Step 3: Add the service to the Wants directory 359

Summary 360

Exercises 360

Chapter 16: Configuring a Print Server 363

Common UNIX Printing System 363

Setting Up Printers 365

Adding a printer automatically 365

Using web-based CUPS administration 366

Allow remote printing administration 367

Add a printer not automatically detected 367

Using the Print Settings window 368

Configuring local printers with the Print Settings window 369

Configuring remote printers 372

Adding a remote CUPS printer 373

Adding a remote UNIX (LDP/LPR) printer 373

Adding a Windows (SMB) printer 374

Working with CUPS Printing 375

Configuring the CUPS server (cupsd.conf) 375

Starting the CUPS server 376

Configuring CUPS printer options manually 377

Using Printing Commands 378

Printing with lp 378

Listing status with lpstat -t 379

Removing print jobs with cancel 379

Configuring Print Servers 380

Configuring a shared CUPS printer 380

Configuring a shared Samba printer 381

Understanding smb.conf for printing 382

Setting up SMB clients 382

Summary 383

Exercises 383

Chapter 17: Configuring a Web Server r 385

Understanding the Apache Web Server 385

Getting and Installing Your Apache Web Server 386

Controlling Apache 389

Securing Apache 389

Apache file permissions and ownership 389

Apache and firewalls 390

Apache and AppArmor 390

Understanding the Apache configuration files 393

Using directives 393

Understanding default settings 395

Adding a virtual host to Apache 398

Allowing users to publish their own web content 400

Securing your web traffic with TLS 401

Understanding how SSL is configured 402

Generating an SSL key and self-signed certificate 403

Generating a certificate signing request 405

Troubleshooting Your Web Server 406

Checking for configuration errors 406

Access forbidden and server internal errors 408

Summary 410

Exercises 410

Chapter 18: Configuring an FTP Server 413

Understanding FTP 413

Installing the vsftpd FTP Server 415

Controlling the vsftpd Service 416

Securing your FTP server 417

Integrating Linux file permissions with vsftpd 418

Configuring Your FTP Server 418

Setting up user access 418

Allowing uploading 419

Setting up vsftpd for the Internet 420

Using FTP Clients to Connect to Your Server 422

Accessing an FTP server from a browser 422

Accessing an FTP server with the lftp command 423

Using the gFTP client 425

Summary 426

Exercises 426

Chapter 19: Configuring a Windows File Sharing (Samba) Server r 429

Understanding Samba 429

Installing Samba 430

Controlling Samba 431

Viewing Samba processes 431

Configuring Samba 435

Configuring the [global] section 435

Configuring the [homes] section 437

Configuring the [printers] section 437

Creating a Samba shared folder 438

Checking the Samba share 438

Accessing Samba Shares 441

Accessing Samba shares in Linux 442

Accessing Samba shares from a Linux file manager 442

Mounting a Samba share from a Linux command line 442

Accessing Samba shares in Windows 444

Using Samba in the Enterprise 444

Summary 444

Exercises 445

Chapter 20: Configuring an NFS File Server 447

Installing an NFS Server 448

Starting the NFS Service 449

Sharing NFS Filesystems 450

Configuring the /etc/exports file 450

Hostnames in /etc/exports 451

Access options in /etc/exports 452

User mapping options in /etc/exports 453

Exporting the shared filesystems 454

Securing Your NFS Server 454

Using NFS Filesystems 455

Viewing NFS shares 456

Manually mounting an NFS filesystem 456

Mounting an NFS filesystem at boot time 457

Mounting noauto filesystems 458

Using mount options 458

Using autofs to mount NFS filesystems on demand 460

Automounting to the /net directory 460

Automounting home directories 461

Unmounting NFS Filesystems 463

Summary 464

Exercises 464

Chapter 21: Troubleshooting Linux 467

Boot-Up Troubleshooting 467

Understanding startup 468

Starting from the firmware (BIOS or UEFI) 469

Troubleshooting BIOS setup 470

Troubleshooting boot order 471

GRUB 2 boot loader 471

Starting the kernel 472

Troubleshooting the initialization system 474

Troubleshooting Software Packages 476

Troubleshooting Networking 479

Troubleshooting outgoing connections 479

View network interfaces 480

Check physical connections 480

Check routes 481

Check hostname resolution 482

Troubleshooting incoming connections 483

Check if the client can reach your system at all 483

Check if the service is available to the client 484

Check the service on the server 485

Troubleshooting Memory 485

Uncovering memory issues 486

Checking for memory problems 488

Dealing with memory problems 489

Summary 490

Exercises 490

Part V: Learning Linux Security Techniques 493

Chapter 22: Understanding Basic Linux Security y 495

Implementing Physical Security 495

Implementing disaster recovery 496

Securing user accounts 496

One user per user account 497

Limiting access to the root user account 497

Setting expiration dates on temporary accounts 497

Removing unused user accounts 498

Securing passwords 500

Choosing good passwords 500

Setting and changing passwords 501

Enforcing best password practices 502

Understanding the password files and password hashes 504

Securing the filesystem 506

Managing dangerous filesystem permissions 506

Securing the password files 507

Locking down the filesystem 508

Managing software and services 509

Updating software packages 509

Keeping up with security advisories 509

Advanced implementation 510

Monitoring Your Systems 510

Monitoring log files 510

Monitoring user accounts 512

Detecting counterfeit accounts and privileges 512

Detecting bad account passwords 514

Monitoring the filesystem 516

Verifying software packages 516

Scanning the filesystem 516

Detecting viruses and rootkits 518

Auditing and Reviewing Linux 521

Conducting compliance reviews 521

Conducting security reviews 522

Summary 522

Exercises 523

Chapter 23: Understanding Advanced Linux Security y 525

Implementing Linux Security with Cryptography 525

Understanding hashing 526

Understanding encryption/decryption 527

Understanding cryptographic ciphers 527

Understanding cryptographic cipher keys 527

Understanding digital signatures 533

Implementing Linux cryptography 535

Ensuring file integrity 535

Encrypting a Linux filesystem at installation 536

Encrypting a Linux directory 537

Encrypting a Linux file 540

Encrypting Linux with miscellaneous tools 540

Using Encryption from the Desktop 541

Implementing Linux Security with PAM 541

Understanding the PAM authentication process 542

Understanding PAM contexts 543

Understanding PAM control flags 544

Understanding PAM modules 545

Understanding PAM system event configuration files 545

Administering PAM on your Linux system 546

Managing PAM-aware application configuration files 546

Implementing resources limits with PAM 547

Implementing time restrictions with PAM 549

Enforcing good passwords with PAM 550

Encouraging sudo use with PAM 551

Obtaining more information on PAM 551

Summary 552

Exercises 552

Chapter 24: Enhancing Linux Security with AppArmor 553

Understanding AppArmor 553

Working with AppArmor 556

Summary 559

Exercises 560

Chapter 25: Securing Linux on a Network 561

Auditing Network Services 561

Evaluating access to network services with nmap 563

Using nmap to audit your network services’ advertisements 566

Working with Firewalls 570

Understanding firewalls 571

Implementing firewalls 572

Starting with UFW 572

Understanding the iptables utility 574

Using the iptables utility 576

Summary 583

Exercises 583

Part VI: Engaging with Cloud Computing 585

Chapter 26: Shifting to Clouds and Containers 587

Understanding Linux Containers 588

Namespaces 589

Container registries 589

Base images and layers 590

Working with Linux Containers 590

Deploying LXD containers 590

Deploying Docker containers 593

Using containers in the enterprise 600

Summary 600

Exercises 600

Chapter 27: Deploying Linux to the Public Cloud 601

Running Linux in the Cloud Using cloud-init 601

Creating LXD Linux Images for Cloud Deployments 604

Working with LXD profiles 604

Working with LXD images 607

Using OpenStack to deploy cloud images 608

Using Amazon EC2 to Deploy Cloud Images 610

Installing the AWS CLI 611

Provisioning and launching an EC2 instance 613

Summary 618

Exercises 618

Chapter 28: Automating Apps and Infrastructure with Ansible 619

Understanding Ansible 620

Exploring Ansible Components 621

Inventories 621

Playbooks 622

Plays 622

Tasks 622

Modules 622

Roles, imports, and includes 623

Stepping Through an Ansible Deployment 623

Prerequisites 624

Setting up SSH keys to each node 624

Installing Ansible 626

Creating an inventory 626

Authenticating to the hosts 626

Creating a playbook 627

Run the playbook 628

Running Ad-Hoc Ansible Commands 629

Trying ad-hoc commands 629

Summary 631

Exercises 631

Chapter 29 Deploying Applications as Containers with Kubernetes 633

Understanding Kubernetes 634

Kubernetes masters 634

Kubernetes workers 635

Kubernetes applications 635

Kubernetes interfaces 636

Trying Kubernetes 636

Getting Kubernetes up and running 637

Deploying a Kubernetes application 638

Getting information on the deployment’s pods 639

Exposing applications with services 643

Scaling up an application 644

Checking the load balancer 645

Scaling down an application 646

Deleting a service 646

Summary 647

Exercises 647

Appendix: Exercise Answers 649

Index 701

Ubuntu Linux Bible

    Product form

    £999.99

    Includes FREE delivery

    A Paperback / softback by David Clinton, Christopher Negus

    Out of stock


      View other formats and editions of Ubuntu Linux Bible by David Clinton

      Publisher: John Wiley & Sons Inc
      Publication Date: 04/01/2021
      ISBN13: 9781119722335, 978-1119722335
      ISBN10: 1119722330

      Description

      Book Synopsis


      Table of Contents

      Acknowledgments ix

      Introduction xxix

      Part I: Getting Started 1

      Chapter 1: Starting with Linux 3

      Understanding What Linux is 4

      Understanding How Linux Differs from Other Operating Systems 6

      Exploring Linux History 7

      Free-flowing UNIX culture at Bell Labs 7

      Commercial UNIX 9

      Berkeley Software Distribution arrives 9

      UNIX Laboratory and commercialization 10

      GNU transitions UNIX to freedom 11

      BSD loses some steam 13

      Linus builds the missing piece 13

      OSI open source definition 14

      Understanding How Linux Distributions Emerged 16

      Understanding Red Hat 17

      Understanding Ubuntu and other Debian distributions 17

      Finding Professional Opportunities with Linux Today 18

      Understanding how companies make money with Linux 19

      Summary 20

      Chapter 2: Creating the Perfect Linux Desktop 21

      Understanding Linux Desktop Technology 22

      Starting with the GNOME 3 Desktop Live Image 24

      Using the GNOME 3 Desktop 25

      After the computer boots up 25

      Navigating with the mouse 25

      Navigating with the keyboard 30

      Setting up the GNOME 3 desktop 31

      Extending the GNOME 3 desktop 31

      Using GNOME shell extensions 32

      Using the GNOME Tweak Tool 33

      Starting with desktop applications 33

      Managing files and folders with Nautilus 33

      Installing and managing additional software 35

      Playing music with Rhythmbox 37

      Stopping the GNOME 3 desktop 37

      Using the Unity Graphical Shell with the GNOME Desktop 37

      Using the Metacity window manager 38

      Changing GNOME’s appearance 40

      Using the panels 40

      Adding a drawer 41

      Changing panel properties 41

      Summary 42

      Exercises 42

      Part II: Becoming a Linux Power User 43

      Chapter 3: Using the Shell 45

      About Shells and Terminal Windows 46

      Using the shell prompt 47

      Using a Terminal window 48

      Using virtual consoles 49

      Choosing Your Shell 49

      Running Commands 50

      Understanding command syntax 51

      Locating commands 53

      Recalling Commands Using Command History 56

      Command-line editing 56

      Command-line completion 58

      Command-line recall 59

      Connecting and Expanding Commands 61

      Piping between commands 62

      Sequential commands 62

      Background commands 63

      Expanding commands 63

      Expanding arithmetic expressions 63

      Expanding variables 64

      Using Shell Variables 64

      Creating and using aliases 66

      Exiting the shell 67

      Creating Your Shell Environment 67

      Configuring your shell 67

      Setting your prompt 68

      Adding environment variables 70

      Getting Information about Commands 71

      Summary 74

      Exercises 74

      Chapter 4: Moving Around the Filesystem 77

      Using Basic Filesystem Commands 80

      Using Metacharacters and Operators 82

      Using fi le-matching metacharacters 82

      Using fi le-redirection metacharacters 84

      Using brace expansion characters 85

      Listing Files and Directories 86

      Understanding File Permissions and Ownership 90

      Changing permissions with chmod (numbers) 91

      Changing permissions with chmod (letters) 92

      Setting default file permission with umask 93

      Changing file ownership 93

      Moving, Copying, and Removing Files 94

      Summary 95

      Exercises 96

      Chapter 5: Working with Text Files 97

      Editing Files with vim and vi 97

      Starting with vi 99

      Adding text 99

      Moving around in the text 100

      Deleting, copying, and changing text 101

      Pasting (putting) text 102

      Repeating commands 102

      Exiting vi 102

      Skipping around in the file 103

      Searching for text 103

      Using ex mode 104

      Learning more about vi and vim 104

      Finding Files 105

      Using locate to find files by name 105

      Searching for files with find 107

      Finding files by name 108

      Finding files by size 108

      Finding files by user 109

      Finding files by permission 109

      Finding files by date and time 110

      Using “not” and “or” when finding files 111

      Finding files and executing commands 112

      Searching in files with grep 113

      Summary 115

      Exercises 115

      Chapter 6: Managing Running Processes 117

      Understanding Processes 117

      Listing Processes 118

      Listing processes with ps 118

      Listing and changing processes with top 120

      Listing processes with System Monitor 122

      Managing Background and Foreground Processes 124

      Starting background processes 124

      Using foreground and background commands 125

      Killing and Renicing Processes 126

      Killing processes with kill and killall 126

      Using kill to signal processes by PID 127

      Using killall to signal processes by name 128

      Setting processor priority with nice and renice 128

      Limiting Processes with cgroups 129

      Summary 131

      Exercises 131

      Chapter 7: Writing Simple Shell Scripts 133

      Understanding Shell Scripts 133

      Executing and debugging shell scripts 134

      Understanding shell variables 135

      Special shell positional parameters 136

      Reading in parameters 137

      Parameter expansion in bash 137

      Performing arithmetic in shell scripts 138

      Using programming constructs in shell scripts 139

      The “if then” statements 139

      The case command 142

      The “for do” loop 143

      The “while do” and “until do” loops 144

      Trying some useful text manipulation programs 145

      The global regular expression print 145

      Remove sections of lines of text (cut) 145

      Translate or delete characters (tr) 146

      The stream editor (sed) 146

      Using simple shell scripts 147

      Telephone list 147

      Backup script 148

      Summary 149

      Exercises 149

      Part III: Becoming a Linux System Administrator 151

      Chapter 8: Learning System Administration 153

      Understanding System Administration 153

      Using Graphical Administration Tools 155

      Using Cockpit browser-based administration 155

      Using other browser-based admin tools 157

      Invoking Administration Privileges 158

      Becoming root from the shell 158

      Gaining temporary admin access with sudo 159

      Exploring Administrative Commands, Configuration Files, and Log Files 161

      Administrative commands 161

      Administrative configuration files 162

      Administrative log files and systemd journal 165

      Using journalctl to view the systemd journal 165

      Managing log messages with rsyslogd 166

      Using Other Administrative Accounts 167

      Checking and Configuring Hardware 167

      Checking your hardware 168

      Managing removable hardware 171

      Working with loadable modules 172

      Listing loaded modules 172

      Loading modules 173

      Removing modules 174

      Summary 174

      Exercises 175

      Chapter 9: Installing Linux 177

      Choosing a Computer 178

      Installing Ubuntu Desktop 180

      Installing Ubuntu Server 185

      Understanding Cloud-Based Installations 188

      Installing Linux in the Enterprise 189

      Exploring Common Installation Topics 189

      Upgrading or installing from scratch 189

      Dual booting 190

      Installing Linux to run virtually 191

      Using installation boot options 192

      Boot options for disabling features 192

      Boot options for video problems 193

      Boot options for special installation types 193

      Using specialized storage 194

      Partitioning hard drives 195

      Understanding different partition types 196

      Tips for creating partitions 196

      Using the GRUB 2 boot loader 198

      Summary 199

      Exercises 199

      Chapter 10: Getting and Managing Software 201

      Managing Software on the Desktop 201

      Going Beyond the Software Window 203

      Understanding Linux Software Packaging 204

      Working with Debian Packaging 205

      APT basics 205

      Working with APT repositories 209

      Working with dpkg 211

      Summary 214

      Exercises 214

      Chapter 11: Managing User Accounts 215

      Creating User Accounts 215

      Adding users with adduser 218

      Setting user defaults 220

      Modifying users with usermod 222

      Deleting users with deluser 223

      Understanding Group Accounts 223

      Using group accounts 224

      Creating group accounts 225

      Managing Users in the Enterprise 225

      Setting permissions with Access Control Lists 226

      Setting ACLs with setfacl 227

      Setting default ACLs 228

      Enabling ACLs 229

      Adding directories for users to collaborate 231

      Creating group collaboration directories (set GID bit) 231

      Creating restricted deletion directories (sticky bit) 233

      Centralizing User Accounts 233

      Summary 234

      Exercises 234

      Chapter 12: Managing Disks and Filesystems 237

      Understanding Disk Storage 237

      Partitioning Hard Disks 239

      Understanding partition tables 239

      Viewing disk partitions 240

      Creating a single-partition disk 241

      Creating a multiple-partition disk 245

      Using Logical Volume Manager Partitions 249

      Checking an existing LVM 249

      Creating LVM logical volumes 252

      Growing LVM logical volumes 254

      Mounting Filesystems 254

      Supported filesystems 255

      Enabling swap areas 257

      Disabling swap area 258

      Using the fstab file to define mountable filesystems 258

      Using the mount command to mount filesystems 261

      Mounting a disk image in loopback 262

      Using the umount command 262

      Using the mkfs Command to Create a Filesystem 263

      Managing Storage with Cockpit 264

      Summary 265

      Exercises 266

      Part IV: Becoming a Linux Server Administrator 267

      Chapter 13: Understanding Server Administration 269

      Getting Started with Server Administration 270

      Step 1: Install the server 270

      Step 2: Configure the server 272

      Using configuration files 272

      Checking the default configuration 272

      Step 3: Start the server 272

      Step 4: Secure the server 274

      Password protection 274

      Firewalls 274

      TCP Wrappers 274

      AppArmor 275

      Security settings in configuration files 275

      Step 5: Monitor the server 275

      Configure logging 275

      Run system activity reports 276

      Watch activity live with Cockpit 276

      Keep system software up to date 277

      Check the filesystem for signs of crackers 277

      Checking and Setting Servers 277

      Managing Remote Access with the Secure Shell Service 277

      Starting the openssh-server service 278

      Using SSH client tools 278

      Using ssh for remote login 279

      Using SSH for remote execution 280

      Copying files between systems with scp and rsync 281

      Interactive copying with sftp 284

      Using key-based (passwordless) authentication 285

      Configuring System Logging 286

      Enabling system logging with rsyslog 287

      Understanding the rsyslog.conf file 287

      Understanding log messages 289

      Setting up and using a loghost with rsyslogd 289

      Watching logs with logwatch 290

      Checking System Resources with sar 291

      Checking System Space 293

      Displaying system space with df 293

      Checking disk usage with du 294

      Finding disk consumption with find 294

      Managing Servers in the Enterprise 295

      Summary 296

      Exercises 296

      Chapter 14: Administering Networking 299

      Configuring Networking for Desktops 300

      Checking your network interfaces 302

      Checking your network from NetworkManager 302

      Checking your network from Cockpit 303

      Checking your network from the command line 304

      Configuring network interfaces 308

      Setting IP addresses manually 308

      Setting IP address aliases 309

      Setting routes 310

      Configuring a network proxy connection 311

      Configuring Networking from the Command Line 312

      Configure networking with nmtui 312

      Editing a NetworkManager TUI connection 313

      Understanding networking configuration files 314

      Other networking files 315

      Setting alias network interfaces 318

      Setting up Ethernet channel bonding 319

      Setting custom routes 320

      Configuring Networking in the Enterprise 321

      Configuring Linux as a router 321

      Configuring Linux as a DHCP server 322

      Configuring Linux as a DNS server 322

      Configuring Linux as a proxy server 323

      Summary 323

      Exercises 324

      Chapter 15: Starting and Stopping Services 327

      Understanding the Initialization Daemon (init or systemd) 328

      Understanding the classic init daemons 329

      Understanding systemd initialization 335

      Learning systemd basics 335

      Learning systemd’s backward compatibility to SysVinit 341

      Checking the Status of Services 343

      Checking services for SysVinit systems 343

      Stopping and Starting Services 346

      Stopping and starting SysVinit services 346

      Stopping a service with systemd 347

      Starting a service with systemd 348

      Restarting a service with systemd 348

      Reloading a service with systemd 349

      Enabling Persistent Services 350

      Configuring persistent services for SysVinit 350

      Enabling a service with systemd 351

      Disabling a service with systemd 352

      Configuring a Default Runlevel or Target Unit 353

      Configuring the SysVinit default runlevel 353

      Adding New or Customized Services 354

      Adding new services to SysVinit 355

      Step 1: Create a new or customized service script file 355

      Step 2: Add the service script to /etc/rc.d/init.d 356

      Step 3: Set appropriate permission on the script 357

      Step 4: Add the service to runlevel directories 357

      Adding new services to systemd 357

      Step 1: Create a new or customized service configuration unit file 358

      Step 2: Move the service configuration unit file 358

      Step 3: Add the service to the Wants directory 359

      Summary 360

      Exercises 360

      Chapter 16: Configuring a Print Server 363

      Common UNIX Printing System 363

      Setting Up Printers 365

      Adding a printer automatically 365

      Using web-based CUPS administration 366

      Allow remote printing administration 367

      Add a printer not automatically detected 367

      Using the Print Settings window 368

      Configuring local printers with the Print Settings window 369

      Configuring remote printers 372

      Adding a remote CUPS printer 373

      Adding a remote UNIX (LDP/LPR) printer 373

      Adding a Windows (SMB) printer 374

      Working with CUPS Printing 375

      Configuring the CUPS server (cupsd.conf) 375

      Starting the CUPS server 376

      Configuring CUPS printer options manually 377

      Using Printing Commands 378

      Printing with lp 378

      Listing status with lpstat -t 379

      Removing print jobs with cancel 379

      Configuring Print Servers 380

      Configuring a shared CUPS printer 380

      Configuring a shared Samba printer 381

      Understanding smb.conf for printing 382

      Setting up SMB clients 382

      Summary 383

      Exercises 383

      Chapter 17: Configuring a Web Server r 385

      Understanding the Apache Web Server 385

      Getting and Installing Your Apache Web Server 386

      Controlling Apache 389

      Securing Apache 389

      Apache file permissions and ownership 389

      Apache and firewalls 390

      Apache and AppArmor 390

      Understanding the Apache configuration files 393

      Using directives 393

      Understanding default settings 395

      Adding a virtual host to Apache 398

      Allowing users to publish their own web content 400

      Securing your web traffic with TLS 401

      Understanding how SSL is configured 402

      Generating an SSL key and self-signed certificate 403

      Generating a certificate signing request 405

      Troubleshooting Your Web Server 406

      Checking for configuration errors 406

      Access forbidden and server internal errors 408

      Summary 410

      Exercises 410

      Chapter 18: Configuring an FTP Server 413

      Understanding FTP 413

      Installing the vsftpd FTP Server 415

      Controlling the vsftpd Service 416

      Securing your FTP server 417

      Integrating Linux file permissions with vsftpd 418

      Configuring Your FTP Server 418

      Setting up user access 418

      Allowing uploading 419

      Setting up vsftpd for the Internet 420

      Using FTP Clients to Connect to Your Server 422

      Accessing an FTP server from a browser 422

      Accessing an FTP server with the lftp command 423

      Using the gFTP client 425

      Summary 426

      Exercises 426

      Chapter 19: Configuring a Windows File Sharing (Samba) Server r 429

      Understanding Samba 429

      Installing Samba 430

      Controlling Samba 431

      Viewing Samba processes 431

      Configuring Samba 435

      Configuring the [global] section 435

      Configuring the [homes] section 437

      Configuring the [printers] section 437

      Creating a Samba shared folder 438

      Checking the Samba share 438

      Accessing Samba Shares 441

      Accessing Samba shares in Linux 442

      Accessing Samba shares from a Linux file manager 442

      Mounting a Samba share from a Linux command line 442

      Accessing Samba shares in Windows 444

      Using Samba in the Enterprise 444

      Summary 444

      Exercises 445

      Chapter 20: Configuring an NFS File Server 447

      Installing an NFS Server 448

      Starting the NFS Service 449

      Sharing NFS Filesystems 450

      Configuring the /etc/exports file 450

      Hostnames in /etc/exports 451

      Access options in /etc/exports 452

      User mapping options in /etc/exports 453

      Exporting the shared filesystems 454

      Securing Your NFS Server 454

      Using NFS Filesystems 455

      Viewing NFS shares 456

      Manually mounting an NFS filesystem 456

      Mounting an NFS filesystem at boot time 457

      Mounting noauto filesystems 458

      Using mount options 458

      Using autofs to mount NFS filesystems on demand 460

      Automounting to the /net directory 460

      Automounting home directories 461

      Unmounting NFS Filesystems 463

      Summary 464

      Exercises 464

      Chapter 21: Troubleshooting Linux 467

      Boot-Up Troubleshooting 467

      Understanding startup 468

      Starting from the firmware (BIOS or UEFI) 469

      Troubleshooting BIOS setup 470

      Troubleshooting boot order 471

      GRUB 2 boot loader 471

      Starting the kernel 472

      Troubleshooting the initialization system 474

      Troubleshooting Software Packages 476

      Troubleshooting Networking 479

      Troubleshooting outgoing connections 479

      View network interfaces 480

      Check physical connections 480

      Check routes 481

      Check hostname resolution 482

      Troubleshooting incoming connections 483

      Check if the client can reach your system at all 483

      Check if the service is available to the client 484

      Check the service on the server 485

      Troubleshooting Memory 485

      Uncovering memory issues 486

      Checking for memory problems 488

      Dealing with memory problems 489

      Summary 490

      Exercises 490

      Part V: Learning Linux Security Techniques 493

      Chapter 22: Understanding Basic Linux Security y 495

      Implementing Physical Security 495

      Implementing disaster recovery 496

      Securing user accounts 496

      One user per user account 497

      Limiting access to the root user account 497

      Setting expiration dates on temporary accounts 497

      Removing unused user accounts 498

      Securing passwords 500

      Choosing good passwords 500

      Setting and changing passwords 501

      Enforcing best password practices 502

      Understanding the password files and password hashes 504

      Securing the filesystem 506

      Managing dangerous filesystem permissions 506

      Securing the password files 507

      Locking down the filesystem 508

      Managing software and services 509

      Updating software packages 509

      Keeping up with security advisories 509

      Advanced implementation 510

      Monitoring Your Systems 510

      Monitoring log files 510

      Monitoring user accounts 512

      Detecting counterfeit accounts and privileges 512

      Detecting bad account passwords 514

      Monitoring the filesystem 516

      Verifying software packages 516

      Scanning the filesystem 516

      Detecting viruses and rootkits 518

      Auditing and Reviewing Linux 521

      Conducting compliance reviews 521

      Conducting security reviews 522

      Summary 522

      Exercises 523

      Chapter 23: Understanding Advanced Linux Security y 525

      Implementing Linux Security with Cryptography 525

      Understanding hashing 526

      Understanding encryption/decryption 527

      Understanding cryptographic ciphers 527

      Understanding cryptographic cipher keys 527

      Understanding digital signatures 533

      Implementing Linux cryptography 535

      Ensuring file integrity 535

      Encrypting a Linux filesystem at installation 536

      Encrypting a Linux directory 537

      Encrypting a Linux file 540

      Encrypting Linux with miscellaneous tools 540

      Using Encryption from the Desktop 541

      Implementing Linux Security with PAM 541

      Understanding the PAM authentication process 542

      Understanding PAM contexts 543

      Understanding PAM control flags 544

      Understanding PAM modules 545

      Understanding PAM system event configuration files 545

      Administering PAM on your Linux system 546

      Managing PAM-aware application configuration files 546

      Implementing resources limits with PAM 547

      Implementing time restrictions with PAM 549

      Enforcing good passwords with PAM 550

      Encouraging sudo use with PAM 551

      Obtaining more information on PAM 551

      Summary 552

      Exercises 552

      Chapter 24: Enhancing Linux Security with AppArmor 553

      Understanding AppArmor 553

      Working with AppArmor 556

      Summary 559

      Exercises 560

      Chapter 25: Securing Linux on a Network 561

      Auditing Network Services 561

      Evaluating access to network services with nmap 563

      Using nmap to audit your network services’ advertisements 566

      Working with Firewalls 570

      Understanding firewalls 571

      Implementing firewalls 572

      Starting with UFW 572

      Understanding the iptables utility 574

      Using the iptables utility 576

      Summary 583

      Exercises 583

      Part VI: Engaging with Cloud Computing 585

      Chapter 26: Shifting to Clouds and Containers 587

      Understanding Linux Containers 588

      Namespaces 589

      Container registries 589

      Base images and layers 590

      Working with Linux Containers 590

      Deploying LXD containers 590

      Deploying Docker containers 593

      Using containers in the enterprise 600

      Summary 600

      Exercises 600

      Chapter 27: Deploying Linux to the Public Cloud 601

      Running Linux in the Cloud Using cloud-init 601

      Creating LXD Linux Images for Cloud Deployments 604

      Working with LXD profiles 604

      Working with LXD images 607

      Using OpenStack to deploy cloud images 608

      Using Amazon EC2 to Deploy Cloud Images 610

      Installing the AWS CLI 611

      Provisioning and launching an EC2 instance 613

      Summary 618

      Exercises 618

      Chapter 28: Automating Apps and Infrastructure with Ansible 619

      Understanding Ansible 620

      Exploring Ansible Components 621

      Inventories 621

      Playbooks 622

      Plays 622

      Tasks 622

      Modules 622

      Roles, imports, and includes 623

      Stepping Through an Ansible Deployment 623

      Prerequisites 624

      Setting up SSH keys to each node 624

      Installing Ansible 626

      Creating an inventory 626

      Authenticating to the hosts 626

      Creating a playbook 627

      Run the playbook 628

      Running Ad-Hoc Ansible Commands 629

      Trying ad-hoc commands 629

      Summary 631

      Exercises 631

      Chapter 29 Deploying Applications as Containers with Kubernetes 633

      Understanding Kubernetes 634

      Kubernetes masters 634

      Kubernetes workers 635

      Kubernetes applications 635

      Kubernetes interfaces 636

      Trying Kubernetes 636

      Getting Kubernetes up and running 637

      Deploying a Kubernetes application 638

      Getting information on the deployment’s pods 639

      Exposing applications with services 643

      Scaling up an application 644

      Checking the load balancer 645

      Scaling down an application 646

      Deleting a service 646

      Summary 647

      Exercises 647

      Appendix: Exercise Answers 649

      Index 701

      Recently viewed products

      © 2026 Book Curl

        • American Express
        • Apple Pay
        • Diners Club
        • Discover
        • Google Pay
        • Maestro
        • Mastercard
        • PayPal
        • Shop Pay
        • Union Pay
        • Visa

        Login

        Forgot your password?

        Don't have an account yet?
        Create account