About GNU/Linux
GNU/Linux is a free software operating system. The system as a whole, parts of it and/or variations are available for desktop, server, cloud, embedded, mobile and IoT computing.
You might be interacting with the building blocks of GNU/Linux without even suspecting it. They could be in smart phones, home routers, Internet servers, laptops and so on. Still, that does not mean that every computing device is using GNU/Linux or has parts of it. However the chances for a device to have software from or related to GNU/Linux somehow are very high.
On desktops, laptops and servers, GNU/Linux usually comes in variations which are called distributions. Those provide the internal order of the OS, the available software, permissions and its procedures. For example, how to to install software, use devices, files and so on. On some core level all distributions are similar, but there are differences as well. For example how software is packaged and installed, where configurations are kept, how privileges are handled and so on.
This course is intended for novice users, who either have very little experience with the OS or none at all. Still, it might be suitable for more advanced users, if they have few gaps that they wish to fill in. However, the topics in the course will probably be boring for more advanced users.
Course goal
The goal of this course is to provide users with basic skills and OS understanding.
The knowledge acquired from this course is fundamental, and later on, can be used to gain new knowledge in IT more easily. For example, the basics in this course can more easily be upgraded towards knowledge and skills in the system administration and DevOps fields. Knowing the fundamentals could help you in understanding and debugging more complex issues related to software. Having a good idea of how the OS is organized, what and when it does, could also help you architect and develop better software as well.
What you will learn
Brief history and practical meaning of software - beyond academic, encyclopedic and university empty definitions
- What is software exactly
- Brief history of software
- Free software. Open source. GNU/Linux, GNU, Linux
- The GNU project. The Free Software Foundation.
- Licenses
- Distributions
Documentation of software and why it is important.
- Where and how to access the documentation on your computer.
Brief overview of the operating system and its structure.
- Kernel
- Filesystem
- Users, groups and permissions
- Processes. System processes (daemons, services)
- The boot process
Processes
- Input, output, errors.
- Return codes
- POSIX
Terminal - clarity in the black window
- Basic concepts. Standard input, output and error.
- Pipeline and redirection.
- Important variables and settings. Fine-tuning.
- Doing more with less typing.
- Autocompletion
- History
- System information.
- job controll
The kernel and the filesystem
- What is a kernel and what it does.
- Micro and monolithic kernels.
- Types of filesystems
- Structure of the filesystem
Users, groups and permissions
- Basic concepts and use cases.
- Good and bad practices.
- Changing permissions and users.
- Who is on the system.
- System processes (daemons, services)
- Editors.
- Archives and compression.
Packages. Software installation.
- Packages
- Dependencies
- Repositories
- Software installation and upgrade.
Persistent configurations
- Global system configuration
- Per user configuration
- Software repositories
- Network
- Security
- Access
Task automation
- Scripts
- Cron jobs
- Systemd timers
Security, security, security!
- Always rely on restrictions
- Encryption overview
- Users and permissions
- TLS/SSL
- SSH
- GPG
- Firewall
- Practical experiments with real-life tasks