Using and Administering Linux

A great 5-star first review for this series.

About this course

Hardware and system requirements

In order to perform the experiments contained in this course you must have access to a single physical computer that can run a up to three virtual machines. These hardware specifications are intended to provide you with some guidance for selecting a computer for use with this course.

Because the VMs will not be running large complex programs the load on them in terms of CPU and RAM memory will usually be moderate. Disk usage may be somewhat high because virtual disks for the VMs may take up a significant amount of disk space after some of the experiments, and you will also make occasional snapshots of the virtual disk in order to make recovery from otherwise catastrophic failures relatively simple. These hardware specifications should be considered as a minimum for use during this course. More and faster is always better.

The motherboard, Processor, and memory should be 64-bit. Many of the 32-bit versions of Linux are no longer supported. The table below is a list of the minimum physical hardware requirements for this course. Note that these requirements have been upgraded since this course was first written. This table is more recent and accurate than the original that appears in Volume 1 of this course.

ComponentDescription
ProcessorThe Intel i5 or i7, 9th or 10th Generation processors; at least 8 cores plus hyperthreading with support for virtualization; 3.1GHz or higher CPU speed.
MotherboardCapable of supporting the Intel processor you selected above; USB support for a keyboard and mouse; video output that matches the video connector of the display (see below) such as HDMI or DVI.
MemoryAt least 16GB of RAM for your host system. This will allow sufficient memory for multiple VMs and still have enough available for the host itself.
StorageInternal or external storage device (HDD or SSD) with at least 800GB of free space for storage of virtual machine disk drives and snapshots.
NetworkOne Ethernet wired network interface card (NIC) that has support for 1Gb connections. An 802.11n Wireless connection is also acceptable but will slow downloads.
USB Keyboard and mouseSeems obvious but just being thorough.
Video displayAny decent flat screen monitor will do so long as it is at least HD (1080P) resolution.
Internet connectionThe physical host must have an Internet connection with at least 300Mb/s download speeds. A greater download speed of 1Gb/s is highly recommended and will make downloading faster and result in less waiting. Use of a physical CAT5 or CAT6 network cable between the ISP’s router and the physical host is also preferred.

Host Software Requirements

The preferred Linux operating system for the physical host on which all of the experiments will be performed is Fedora 36 or the most recent version of Fedora that is currently available. You will be using Fedora on the virtual machines anyway so this makes the most sense. VirtualBox will be used the virtualization platform for the experiments in this course because it is open source and free of charge.

No other software is required for the physical system that will host the virtual environment.

Course description

This Linux training course, “Using and Administering Linux – Zero to SysAdmin,” consists of the three volume book series “Using and Administering Linux – Zero to SysAdmin.” Each of these three volumes is used for one component of the course. To complete the full course you must complete all three volumes.

This Linux training course differs from others because it is a complete self-study course. If you start at the beginning of Volume 1 and read the text, perform all of the experiments, and do all of the chapter exercises through to the end of Volume 3, even if you are starting from zero knowledge about Linux, you can learn the tasks necessary to becoming a Linux System Administrator, a SysAdmin. These are intensely hands-on courses and almost every chapter contains multiple experiments that provide the opportunities to get that direct experience that so many of us SysAdmins prefer as our learning methodology.

Each chapter in these three volumes has specific learning objectives, interactive experiments, and review exercises that include both hands-on experiments and some review questions. I learned this format when I worked as a course developer for IBM from 1978 through 1981. It is a tried and true format that works well for self study.

These course materials can also be used as reference materials. I have used my previous course materials for reference for many years and they have been very useful in that role. I have kept this as one of my goals in this three-volume set of materials.

Note: Not all of the review exercises in this course can be answered by simply reviewing the chapter content. For some questions you will need to design your own experiment in order to find a solution. In many cases there will very probably be multiple solutions and all that produce the correct results will be the “correct” ones.

Course Philosophy

This course presents a complete, end to end Linux training course for you like you who want to learn to be a Linux System Administrator – a SysAdmin. This course in three volumes was designed as a unit and based on a philosophy that has defined its overall structure and the details of its implementation.

Many Linux training courses begin with the assumption that the first course a student should take is one designed to start them as users. Those courses may discuss the role of root in system administration, but ignore topics and details that are important to future SysAdmins. Other courses ignore system administration altogether. A typical second course will introduce the student to system administration, while a third may tackle advanced administration topics.

Frankly, this baby-step approach did not work well for many of us who are now Linux SysAdmins. We became SysAdmins, in part at least, due to our intense desire – our deep need – to learn as much as possible as quickly as possible. It is, I think in large part, due to our highly inquisitive natures. We learn a basic command and then start asking questions, experimenting with it to see what its limits are, what breaks it, what using it can break. We explore the man(ual) pages and other documentation to learn the extreme usages to which it might be put. If things don’t break by themselves, we break them intentionally to see how they work and to learn how to fix them. We relish our own failures because we learn more from fixed them than we do when things always work as they are supposed to.

In this course you will dive deep into Linux system administration from the very beginning. You will learn many of the Linux tools required to use and administer Linux workstations and servers – usually multiple tools that can be applied to each of these tasks. The tools you will learn to use when solving problems with Linux and the hardware on which it runs are similar to the X-ray, MRI, CT scans, biopsies, and blood tests used by physicians when looking for and resolving the causes of an illness in humans. You will use your tools in much the same way.

This course contains many experiments to provide you with the kind of hands-on experiences that SysAdmins appreciate. All of these experiments guide you one step at a time into the elegant and beautiful depths of the Linux experience. You will learn that Linux is simple and that simplicity is what makes it both elegant and knowable.

Based on my own years working with Unix and Linux, the course materials contained in these three volumes are designed to introduce you to the practical, daily tasks you will perform as a Linux user and, at the same time, as a Linux system administrator – SysAdmin. But I do not know everything – that is just not possible – no SysAdmin does. Further, no two SysAdmins know exactly the same things because that, too is impossible. We have each started with different knowledge and skills; we have different goals; we have different experiences because the systems on which we work have failed in different ways, had different hardware, were embedded in different networks, had different Linux distributions installed, and many other differences. We use different tools and approaches to problem solving because the many different mentors and teachers we had used different sets of tools from each other; we think differently; and we know different things about the hardware on which Linux runs. Our past is much of what makes us what we are and what defines us as SysAdmins.

So I will show you things in this course – things that I think are important for you to know – things that, in my opinion, will provide you with the skills to use your own curiosity and creativity to find solutions that I would never think of to problems I have never encountered.

What this course is not

This course is not a certification study guide. It is not designed to help you pass a certification test of any type. This course is intended purely to help you become a good or perhaps even great SysAdmin, not to pass a test.

There are a few good certification tests. Red Hat certifications are among the best because they are based on the test-taker’s ability to perform specific tasks. I am not familiar with any of the other certification tests because I have not taken them. But the courses you can take and books you can purchase to help you pass those tests are designed to help you pass the tests and not to administer a Linux host or network. That does not make them bad – They just have different objectives from this course.

Content overview

This quick overview of the contents of each volume should serve as a quick orientation guide if you need to locate specific information. It will give you a good overview of the entire course.

Using and Administering Linux: Volume 1 – Zero to SysAdmin: Getting Started

Volume 1 of this training course begins by introducing operating systems in general and Linux in particular. It briefly explores the The Linux Philosophy for SysAdmins1 in preparation for the rest of the course.

Chapter 4 then guides you through the use of VirtualBox to create a virtual machine (VM) and a virtual network to use as a test laboratory for performing the many experiments that are used throughout the course. In Chapter 5, you will install the Xfce version of Fedora – a popular and powerful Linux distribution – on the VM. In Chapter 6 you will learn to use the Xfce desktop which will enable you to leverage your growing command line interface (CLI) expertise as you proceed through the course.

Chapters 7 and 8 will get you started using the Linux command line and introduce you to some of the basic Linux commands and their capabilities. In Chapter 9 you will learn about data streams and the Linux tools used to manipulate them. And in Chapter 10 you will learn a bit about several text editors which are indispensable to advanced Linux users and system administrators.

Chapter 11 through 13 start your work as a SysAdmin and takes you through some specific tasks such as installing software updates and new software. Chapters 14 and 15 discuss more terminal emulators and some advanced shell skills. In Chapter 16 you will learn about the sequence of events that take place as the computer boots and Linux starts up. Chapter 17 shows you how to configure your shell to personalize it in ways that can seriously enhance your command line efficiency.

Finally, Chapter 18 and 19 dive into all things file and filesystems.

  1. Introduction
  2. Introduction to operating systems
  3. The Linux Philosophy
  4. Preparation
  5. Installing Linux
  6. Using the Xfce desktop
  7. The Linux command line
  8. Linux core utilities
  9. Data streams
  10. Text editors
  11. Working as root
  12. Installing updates and new software
  13. Tools for Problem solving
  14. Terminal mania
  15. Advanced Shell Topics
  16. Linux boot and startup
  17. Shell configuration
  18. Files, Directories, and Links
  19. Filesystems

Using and Administering Linux: Volume 2 – Zero to SysAdmin: Advanced Topics

Volume 2 of Using and Administering Linux introduces you to some incredibly powerful and useful advanced topics that every SysAdmin must know.

In Chapters 1 and 2 you will experience an in-depth exploration of logical volume management – and what that even means – as well as the use of file managers to manipulate files and directories. Chapter 3 introduces the concept that, in Linux, everything is a file. You will also learn some fun and interesting uses of the fact that everything is a file.

In Chapter 4 you will learn to use several tools that enable the SysAdmin to manage and monitor running processes. Chapter 5 enables you to experience the power of the special filesystems, such as /proc, that enable us as SysAdmins to monitor and tune the kernel while it is running – without a reboot.

Chapter 6 will introduce you to regular expressions and the power that using them for pattern matching can bring to the command line, while Chapter 7 discusses managing printers and printing from the command line. In Chapter 8 you will use several tools to unlock the secrets of the hardware in which your Linux operating system is running.

Chapters 9 through 11 show you how to do some simple – and not so simple – command line programming and how to automate various administrative tasks.

You will begin to learn the details of networking in Chapter 12, and Chapters 13 and 14 show you how to manage the many services that are required in a Linux system. You will also explore the underlying software that manages the hardware and can detect when hardware devices such as USB thumb drives are installed and how the system reacts to that.

Chapter 15 shows you how to use the logs and journals to look for clues to problems and confirmation that things are working correctly. Chapter 16 covers creating, deleting, and managing user accounts.

Chapters 17 and 18 show you how to enhance the security of your Linux systems, including how to perform easy local and remote backups.

  1. Logical Volume Management
  2. File Managers
  3. Everything is a file
  4. Managing Processes
  5. Special filesystems
  6. Regular expressions
  7. Printing
  8. Hardware detection
  9. Command line programming
  10. Automation with BASH scripts
  11. Time and Automation
  12. Networking
  13. systemd
  14. dbus and Udev
  15. Using logs and journals
  16. Managing users
  17. Security
  18. Backups

Using and Administering Linux: Volume 3 – Zero to SysAdmin: Network Services

In Volume 3 of Using and Administering Linux you will start by creating a new VM on the existing virtual network. This new VM will be used as a server for the rest of this course and it will replace some of the functions performed by the virtual router that is part of our virtual network.

Chapter 2 begins this transformation from simple workstation to server by adding a new network interface card (NIC) to the VM so that it can act as a firewall and router, then changing its network configuration from DHCP to static. This includes configuring both NICs so that one is connected to the existing virtual router to allow connections to the outside world, and so that the other NIC connects to the new “inside” network that will contain the existing VM.

Chapters 3 and 4 guide you through setting up the necessary services, DHCP and DNS, that are required to support a managed, internal network, and Chapter 5 takes you through configuration of SSHD to provide secure remote access between Linux hosts. In Chapter 6 you will convert the new server into a router with a simple yet effective firewall.

You will learn to install and configure an enterprise class email server that can detect and block most spam and malware in Chapters 7 through 9. Chapter 10 takes you through setting up a web server and in Chapter 11 you will set up WordPress, a flexible and powerful content management system.

In Chapter 12 you return to email by setting up a mailing list using MailMan. Then Chapter 13 guides you through sharing files to both Linux and Windows hosts. Sometimes accessing a desktop remotely is the only way to do some things so in Chapter 14 you will do just that.

Chapter 15 shows you how to set up a time server on your network and how to determine its accuracy. Although we have incorporated security in all aspects of what has already been covered, Chapter 16 covers some additional security topics.

Chapter 17 discusses package management from the other direction by guiding you through the process of creating an RPM package for the distribution of your own scripts and configuration files.

Finally, Chapter 18 will get you started in the right direction because I know you are going to ask, “Where do I go from here?”

  1. Preparation
  2. Server Configuration
  3. DHCP
  4. Name services – DNS
  5. Remote access with SSH
  6. Routing and Firewalls
  7. Introducing Email
  8. Email clients
  9. Combating spam
  10. Apache web server
  11. WordPress
  12. Mailing lists
  13. File sharing with NFS and SAMBA
  14. Using remote desktop access
  15. Does anybody know what time it is?
  16. Security
  17. Advanced Package Management
  18. Where do I go from here?

Taking this course

Although designed primarily as a self-study guide, this course can be used effectively in a classroom environment. This course can also be used very effectively as a reference. Many of the original course materials I wrote for Linux training classes I used to teach as an independent trainer and consultant were valuable to me as references. The experiments became models for performing many tasks and later became the basis for automating many of those same tasks. I have used many of those original experiments in parts of this course, because they are still relevant and provide an excellent reference for many of the tasks I still need to do.

You will see as you proceed through the course that it uses many software programs considered to be older and perhaps obsolete like Sendmail, Procmail, BIND, the Apache web server, and more. Despite their age, or perhaps because of it, the software I have chosen to run my own systems and servers and to use in this course, has been well-proven and is all still in widespread use. I believe that the software we will use in these experiments has properties that make it especially valuable in learning the in-depth details of how Linux and those services work. Once you have learned those details, moving to any other software that performs the same tasks will be relatively easy. In any event, none of that “older” software is anywhere near as difficult or obscure as some people seem to think that it is.

Who should take this course

If you want to learn to be an advanced Linux user and SysAdmin, this course is for you.

Most SysAdmins have an extremely high level of curiosity and a deep seated need to learn Linux System Administration. We also want to learn new things to start or advance our careers.

We like to take things apart and put them back together again to learn how they work. We enjoy fixing things and are not hesitant about diving in to fix the computer problems that our friends and co-workers bring us. We want to know what happens when some part of computer hardware fails so we might save defective components such as motherboards, RAM memory, and hard drives. This gives us defective components with which we can run tests. As I write this, I have a known defective hard drive inserted in a hard drive docking station connected to my primary workstation, and have been using it to test failure scenarios that appear in this course.

Most importantly, we do all of this for fun and would continue to do so even if we had no compelling vocational reason for doing so. Our intense curiosity about computer hardware and Linux leads us to collect computers and software like others collect stamps or antiques. Computers are our avocation – our hobby. Some people like boats, sports, travel, coins, stamps, trains, or any of thousands of other things, and they pursue them relentlessly as a hobby. For us – the true SysAdmins – that is what our computers are. That does not mean we are not well-rounded and do not do other things. I like to travel, read, go to museums and concerts, ride historical trains, and my stamp collection is still there, waiting for me when I decide to take it up again.

In fact, the best SysAdmins, at least the ones I know, are all multifaceted. We are involved in many different things and I think that is due to our inexhaustible curiosity about pretty much everything. So if you have an insatiable curiosity about Linux and want to learn about it – regardless of your past experience or lack thereof – then this course is most definitely for you.

Who should not take this course

If you do not have a strong desire to learn about or to administer Linux systems, this course is not for you. If all you want – or need – to do is use a couple apps on a Linux computer that someone has put on your desk, this course is not for you. If you have no curiosity about what superpowers lie underneath the GUI desktop, this course is not for you.

Why this course

Someone asked me why I want to write this course. My answer is simple – I want to give back to the community. I have had several amazing mentors over the span of my career and they taught me many things – things I find worth sharing with you along with much that I have learned for myself.

This course – all three volumes of it – started its existence as the slide presentations and lab projects for three Linux courses I created and taught. For a number of reasons I do not teach those classes any more. However I would still like to pass on my knowledge and as many of the tips and tricks I have learned for the administration of Linux as possible. I hope that with this course I can pass on at least some of the guidance and mentoring that I was fortunate enough to have in my own career.

This Linux training course differs from others because it is a complete self-study course. You should start at the beginning of Volume 1 and read the text, perform all of the experiments, and do all of the chapter exercises through to the end of Volume 3. If you do this, even if you are starting from zero knowledge about Linux, you can learn the tasks necessary to becoming a Linux System Administrator, a SysAdmin.

Another difference this course has over others, is that all of the experiments are performed on one or more virtual machines (VMs) in a virtual network. Using the free software, VirtualBox, you will create this virtual environment on any reasonably sized host, whether Linux or Windows. In this virtual environment you are free to experiment on your own, make mistakes that could damage the Linux installation of a hardware host, and still be able to recover completely by restoring the Linux VM host from any one of multiple snapshots. This flexibility to take risks and yet recover easily makes it possible to learn more than would otherwise be possible.

I have always found that I learn more from my mistakes than I ever have when things work as they are supposed to. For this reason I suggest that, rather than immediately reverting to an earlier snapshot when you run into trouble, you try to figure out how the problem was created and how best to recover from it. If, after a reasonable period of time, you have not resolved the problem, that would be the point at which reverting to a snapshot would make sense.

Each chapter has specific learning objectives, interactive experiments, and review exercises that include both hands-on experiments and some review questions. I learned this format when I worked as a course developer for IBM from 1978 through 1981. It is a tried and true format that works well for self study.

These three volumes present a complete, end to end Linux training course for students like you who know before you start that you want to learn to be a Linux System Administrator – a SysAdmin. This Linux self-study course will allow you to learn Linux right from the beginning with the objective of becoming a SysAdmin.

Many Linux training courses begin with the assumption that the first course a student should take is one designed to start them as users. Those courses may discuss the role of root in system administration, but ignore topics that are important to future SysAdmins. Other courses ignore system administration altogether. A typical second course will introduce the student to system administration, while a third may tackle advanced administration topics.

In this course we will dive deep into Linux system administration almost from the very beginning. You will learn many of the Linux tools required to use and administer Linux workstations and servers – usually multiple tools that can be applied to each of these tasks. This course contains many experiments to provide you with the kind of hands-on experiences that SysAdmins appreciate. All of these experiments guide you one step at a time into the elegant and beautiful depths of the Linux experience. You will learn that Linux is simple and that simplicity is what makes it both elegant and knowable.

Based on my own years working with Unix and Linux, the course materials contained in these three volumes are designed to introduce you to the practical, daily tasks you will perform as a Linux user and, at the same time, as a Linux system administrator – SysAdmin. But I do not know everything – that is just not possible – no SysAdmin does. Further, no two SysAdmins know exactly the same things because that, too is impossible. We have each started with different knowledge and skills; we have different goals; we have different experiences because the systems on which we work have failed in different ways, had different hardware, were embedded in different networks, had different distributions installed, and many other differences. We use different tools and approaches to problem solving because the many different mentors and teachers we had used different sets of tools from each other; we use different Linux distributions; we think differently; and we know different things about the hardware on which Linux runs. Our past is much of what makes us what we are and what defines us as SysAdmins.

So I will show you things in this course – things that I think are important for you to know – things that, in my opinion, will provide you with the skills to use your own curiosity and creativity to find solutions that I would never think of to problems I have never encountered.

What this course is not

This course is not a certification study guide. It is not designed to help you pass a certification test of any type. This course is intended purely to help you become a good or perhaps even great SysAdmin, not to pass a test.

There are a few good certification tests. Red Hat and Cisco certifications are among the best because they are based on the test-taker’s ability to perform specific tasks. I am not familiar with any of the other certification tests because I have not taken them. But the courses you can take and books you can purchase to help you pass those tests are designed to help you pass the tests and not to administer a Linux host or network. That does not make them bad – just different from this course.