Preface xliii
Chapter 1: Welcome to Linux 1
The History of UNIX and GNU-Linux 2
Overview of Linux 11
Choosing an Operating System 19
Chapter Summary 21
Exercises 21
Part I: Installing Ubuntu Linux 23
Chapter 2: Installation Overview 25
Conventions Used in This Book 26
More Information 29
Planning the Installation 30
Ubuntu Releases, Editions, and Derivatives 35
Setting Up the Hard Disk 38
Downloading an Image File and Burning/Writing the Installation Medium 47
Chapter Summary 53
Exercises 54
Advanced Exercises 54
Chapter 3: Step-by-Step Installation 55
Booting Ubuntu and Running a Live Session 56
Basic Installation 59
Advanced Installation 71
Chapter Summary 93
Exercises 94
Advanced Exercises 94
Part II: Using Ubuntu Linux 95
Chapter 4: Introduction to Ubuntu 97
Curbing Your Power: root Privileges/sudo 98
Logging In on the System 99
Working with the Unity Desktop 104
Using the Nautilus File Manager 108
The System Settings Window 113
Getting Help 118
Installing, Removing, and Updating Software Packages 121
Working from the Command Line 125
More About Logging In and Passwords 142
Chapter Summary 145
Exercises 146
Advanced Exercises 147
Chapter 5: The Shell 149
Special Characters 150
Ordinary Files and Directory Files 151
The Command Line 152
Standard Input and Standard Output 159
Running a Command in the Background 171
Filename Generation/Pathname Expansion 173
Builtins 178
Chapter Summary 178
Exercises 179
Advanced Exercises 181
Chapter 6: The Linux Filesystem 183
The Hierarchical Filesystem 184
Ordinary Files and Directory Files 185
Pathnames 189
Working with Directories 191
Access Permissions 199
ACLs: Access Control Lists 206
Links 211
Chapter Summary 217
Exercises 219
Advanced Exercises 220
Chapter 7: The Linux Utilities 223
Basic Utilities 224
Working with Files 232
Compressing and Archiving Files 253
Displaying User and System Information 260
Miscellaneous Utilities 263
Editing Files 270
Chapter Summary 280
Exercises 282
Advanced Exercises 283
Chapter 8: Networking and the Internet 285
Introduction to Networking 286
Types of Networks and How They Work 288
Communicate over a Network 307
Network Utilities 308
Distributed Computing 315
WWW: World Wide Web 325
Chapter Summary 327
Exercises 328
Advanced Exercises 328
Part III: System Administration 331
Chapter 9: The Bourne Again Shell (bash) 333
Background 334
Startup Files 335
Commands That Are Symbols 339
Redirecting Standard Error 339
Writing and Executing a Shell Script 342
Control Operators: Separate and Group Commands 347
Job Control 352
Manipulating the Directory Stack 355
Parameters and Variables 358
Special Characters 372
Locale 374
Time 377
Processes 379
History 382
Aliases 398
Functions 402
Controlling bash: Features and Options 404
Processing the Command Line 409
Chapter Summary 420
Exercises 421
Advanced Exercises 423
Chapter 10: System Administration: Core Concepts 425
The Upstart Event-Based init Daemon 427
System Operation 437
GRUB: The Linux Boot Loader 444
Recovery (Single-User) Mode 450
Textual System Administration Utilities 454
Setting Up a Server 460
DHCP: Configures Network Interfaces 464
nsswitch.conf: Which Service to Look at First 468
X Window System 471
Getting Help 476
Chapter Summary 477
Exercises 478
Advanced Exercises 478
Chapter 11: Files, Directories, and Filesystems 479
Important Files and Directories 480
File Types 493
Filesystems 497
The XFS Filesystem 506
Chapter Summary 507
Exercises 508
Advanced Exercises 508
Chapter 12: Finding, Downloading, and Installing Software 509
Introduction 510
JumpStart: Installing and Removing Software Packages Using apt-get 512
Finding the Package That Holds an Application or File You Need 514
APT: Keeps the System Up to Date 515
dpkg: The Debian Package Management System 524
BitTorrent 531
Installing Non-dpkg Software 533
Keeping Software Up to Date 535
curl: Downloads Files Noninteractively 536
Chapter Summary 536
Exercises 537
Advanced Exercises 537
Chapter 13: Printing with CUPS 539
Introduction 540
The System Configures a Local Printer Automatically 542
JumpStart I: Configuring a Printer Using system-config-printer 542
JumpStart II: Setting Up a Local or Remote Printer 544
Working with the CUPS Web Interface 548
Configuring Printers 549
Traditional UNIX Printing 557
Printing from Windows 558
Printing to Windows 560
Chapter Summary 560
Exercises 561
Advanced Exercises 561
Chapter 14: Administration Tasks 563
Configuring User and Group Accounts 564
Backing Up Files 568
Scheduling Tasks 573
System Reports 576
Maintaining the System 578
Chapter Summary 593
Exercises 594
Advanced Exercises 594
Chapter 15: System Security 595
Running Commands with root Privileges 596
Passwords 615
Securing a Server 616
PAM 621
Cryptography 626
GPG (GNU Privacy Guard) 641
Security Resources 656
Chapter Summary 659
Exercises 660
Advanced Exercises 660
Chapter 16: Configuring and Monitoring a LAN 661
More Information 662
Setting Up the Hardware 662
Configuring the Systems 666
NetworkManager: Configures Network Connections 667
Setting Up Servers 672
Introduction to Cacti 674
Chapter Summary 683
Exercises 684
Advanced Exercises 685
Chapter 17: Setting Up Virtual Machines Locally and in the Cloud 687
VMs (Virtual Machines) 688
gnome-boxes 690
QEMU/KVM 691
VMware Player: Installing Ubuntu on VMware 698
Cloud Computing 703
Chapter Summary 708
Exercises 709
Advanced Exercises 709
Part IV: Using Clients and Setting Up Servers 711
Chapter 18: The OpenSSH Secure CommunicationUtilities 713
Introduction to OpenSSH 714
Running the ssh, scp, and sftp OpenSSH Clients 716
Setting Up an OpenSSH Server (sshd) 727
Troubleshooting 735
Tunneling/Port Forwarding 735
Chapter Summary 738
Exercises 739
Advanced Exercises 739
Chapter 19: The rsync Secure Copy Utility 741
Syntax 742
Arguments 742
Options 742
Examples 745
Chapter Summary 752
Exercises 752
Chapter 20: FTP: Transferring Files Across a Network 753
Introduction to FTP 754
Running the ftp and sftp FTP Clients 756
Setting Up an FTP Server (vsftpd) 764
Chapter Summary 777
Exercises 778
Advanced Exercises 778
Chapter 21: postfix: Setting Up Mail Servers, Clients, and More 779
Overview 780
Introduction to postfix 781
Setting Up a postfix Mail Server 784
JumpStart: Configuring postfix to Use Gmail as a Smarthost 787
Configuring postfix 789
SpamAssassin 797
Additional Email Tools 801
dovecot: Setting Up an IMAP or POP3 Mail Server 807
Chapter Summary 810
Exercises 811
Advanced Exercises 812
Chapter 22: NIS and LDAP 813
Introduction to NIS 814
Running an NIS Client 817
Setting Up an NIS Server 822
Introduction to LDAP 830
Setting Up an LDAP Server 833
Chapter Summary 839
Exercises 840
Advanced Exercises 840
Chapter 23: NFS: Sharing Directory Hierarchies 843
Introduction to NFS 845
Running an NFS Client 847
Setting Up an NFS Server 853
automount: Mounts Directory Hierarchies on Demand 863
Chapter Summary 866
Exercises 867
Advanced Exercises 867
Chapter 24: Samba: Linux and Windows File and Printer Sharing 869
Introduction to Samba 870
Running Samba Clients 874
Setting Up a Samba Server 878
Troubleshooting 887
Chapter Summary 889
Exercises 890
Advanced Exercises 890
Chapter 25: DNS/BIND: Tracking Domain Names and Addresses 891
Introduction to DNS 892
Setting Up a DNS Server 904
Configuring a DNS Server 907
Chapter Summary 920
Exercises 921
Advanced Exercises 921
Chapter 26: ufw, gufw, and iptables: Setting Up a Firewall 923
ufw: The Uncomplicated Firewall 924
gufw: The Graphical Interface to ufw 927
Introduction to iptables 932
Building a Set of Rules Using iptables 937
Copying Rules to and from the Kernel 944
Sharing an Internet Connection Using NAT 945
Chapter Summary 948
Exercises 949
Advanced Exercises 949
Chapter 27: Apache (apache2): Setting Up a Web Server 951
Introduction 952
Running an Apache Web Server 954
Configuration Directives 961
Advanced Configuration 984
Troubleshooting 990
Modules 991
webalizer: Analyzes Web Traffic 997
Error Codes 997
Chapter Summary 998
Exercises 998
Advanced Exercises 999
Part V: Programming Tools 1001
Chapter 28: Programming the Bourne Again Shell (bash) 1003
Control Structures 1004
File Descriptors 1038
Parameters 1044
Variables 1053
Builtin Commands 1062
Expressions 1078
Implicit Command-Line Continuation 1085
Shell Programs 1086
Chapter Summary 1096
Exercises 1098
Advanced Exercises 1100
Chapter 29: The Python Programming Language 1103
Introduction 1104
Scalar Variables, Lists, and Dictionaries 1108
Control Structures 1114
Reading from and Writing to Files 1119
Regular Expressions 1123
Defining a Function 1124
Using Libraries 1125
Lambda Functions 1129
List Comprehensions 1130
Chapter Summary 1131
Exercises 1132
Advanced Exercises 1132
Chapter 30: The MariaDB SQL Database Management System 1135
History 1136
Notes 1136
Installing a MariaDB Server 1140
Setting Up MariaDB 1141
Examples 1145
Chapter Summary 1157
Exercises 1157
Advanced Exercises 1157
Part VI: Appendixes 1159
Appendix A: Regular Expressions 1161
Characters 1162
Delimiters 1162
Simple Strings 1162
Special Characters 1162
Rules 1165
Bracketing Expressions 1166
The Replacement String 1166
Extended Regular Expressions 1167
Appendix Summary 1169
Appendix B: Help 1171
Solving a Problem 1172
Finding Linux-Related Information 1173
Specifying a Terminal 1175
Appendix C: Keeping the System Up to Date Using yum 1177
Installing and Removing Software Packages Using yum 1178
Working with yum 1179
Appendix D: LPI and Comptia Certification 1183
More Information 1184
Linux Essentials 1184
Certification Exam 1 Objectives: LX0-101 1198
Certification Exam 2 Objectives: LX0-102 1214
Glossary 1231
JumpStart Index 1285
File Tree Index 1287
Utility Index 1291
Main Index 1297