Linux Fundamentals
Linux is an open-source operating system kernel combined with userspace tools that together form the foundation for servers, cloud infrastructure, containers, embedded systems, and desktops. Understanding Linux means understanding files, processes, permissions, shells, and system services.
itLinux | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic — Linux Fundamentals
Linux is a kernel — the part of an operating system that talks to hardware, schedules work, and enforces the rules — plus a large, loosely federated pile of user-space software that somebody has to assemble into something you can actually install.
That somebody is a distribution, and this is the first thing that trips people up: there is no single "Linux," there are hundreds of distributions that share a kernel and disagree about almost everything built on top of it.
Before Linux, if you wanted a Unix-like system on ordinary PC hardware, your options were a restrictively licensed teaching operating system or an expensive commercial Unix you probably couldn't afford and definitely couldn't read the source of. Linux existed because a student wanted to run something Unix-shaped on his own machine and was willing to write the missing kernel himself. The GNU project had already spent most of a decade writing the user-space half of a free Unix and needed exactly this piece to finish the job.
Two ideas do most of the work in this course. First, everything you do gets routed through a small number of layers — kernel, filesystem, processes and services, shell — and diagnosing a problem is mostly a matter of working out which layer owns it before you touch anything. Second, a path is not a permission slip: /etc/shadow existing where you expect it tells you nothing about whether you're allowed to read it. That depends on who is asking, not where the file lives.
Here's the part that catches people who've read the manual and still get surprised: a permission denial doesn't tell you which layer denied you. Ordinary owner/group/other bits, ACLs, capabilities, and a mandatory-access system like SELinux or AppArmor each get an independent veto, and Linux hands back the same Permission denied regardless of which one used it. Fixing the layer you noticed first is not the same as fixing the layer that's actually in your way — you may need to check three more before the operation that "should just work" actually does.
Start with the Intro tab for the mental model that everything else here assumes: kernel, filesystem, processes, shell, in that order. The cheatsheet is where you go once you already know what you're looking for and want the exact permission table or the systemd command. Field Notes collects the judgment calls that don't fit either of those — what a sudo allow-list actually protects you from, and why "active" in systemctl status doesn't mean "ready." The quiz is a decent gut check on whether the four-layer model actually stuck, and the reference links are where you go once orientation stops being the problem and depth becomes the problem instead.
None of this makes you a systems administrator by itself. It gets you to the point where an unfamiliar Linux box is a system you can reason about instead of a wall of commands you're pattern-matching against.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://docs.kernel.org/admin-guide/index.html
Supports
- Kernel user and administrator documentation scope
- Kernel administrative interfaces including `/proc` and sysfs
- Booting, kernel parameters, security, and diagnostic documentation areas
- https://docs.kernel.org/filesystems/proc.html
Supports
- `/proc` as an interface to kernel internal data structures
- `/proc` system information and runtime parameter interface
- Per-process directories named by PID
- https://www.gnu.org/software/bash/manual/bash.html
Supports
- Shell execution of commands and control of input, output, and environments
- Pipelines connecting standard output to the next command's standard input
- Pipeline status and the `pipefail` option
- Standard input, output, error, and redirection behavior
- https://www.gnu.org/software/coreutils/manual/coreutils.html
Supports
- GNU core utilities for text and file manipulation
- Coreutils areas for directories, file operations, process control, and permissions
- Ownership changes requiring suitable privilege
- https://www.gnu.org/software/coreutils/manual/html_node/Mode-Structure.html
Supports
- Owner, group, and other permission classes
- Read, write, and execute meanings for regular files and directories
- Directory write for creating and removing entries
- Directory execute as search or traversal
- https://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html
Supports
- Filesystem Hierarchy Standard purpose and scope
- Common placement conventions for `/etc`, `/home`, `/tmp`, `/usr`, and `/var`
- Interoperability purpose of filesystem hierarchy conventions
- https://wiki.freedesktop.org/www/Software/systemd/
Supports
- systemd as a system and service manager running as PID 1
- systemd supervision, logging, and related system-management components
- systemd as a replacement for SysV init on systems that choose it
- https://www.freedesktop.org/software/systemd/man/255/journalctl.html
Supports
- `journalctl` printing entries from the system journal
- Filtering journal entries by unit and following service logs
- https://www.gnu.org/gnu/initial-announcement.html
Supports
- Richard Stallman's 1983 announcement of the GNU project
- Timeline: GNU project announced (1983 Sep 27)
- https://www.cs.cmu.edu/~awb/linux.history.html
Supports
- Archived text of Linus Torvalds' August 1991 comp.os.minix post announcing a free kernel project
- Timeline: Torvalds announces a free kernel project (1991 Aug 25)
- https://www.kernel.org/pub/linux/kernel/Historic/old-versions/RELNOTES-0.01
Supports
- The first published Linux kernel source release notes
- Timeline: Linux 0.01 is published (1991 Sep 17)
- https://www.kernel.org/doc/ols/2011/ols2011-masters.pdf
Supports
- Kernel release history including the 0.12 GPL relicensing
- Timeline: Linux 0.12 adopts the GNU GPL (1992 Jan)
- https://www.debian.org/intro/about
Supports
- Debian's own account of its August 1993 founding by Ian Murdock
- Timeline: The Debian Project is founded (1993 Aug)
- https://www.redhat.com/en/blog/25-things-you-should-know-about-red-hat-0
Supports
- Red Hat's own account of its March 1993 founding
- Red Hat's first public Linux release in October 1994
- Timeline: Red Hat is founded (1993 Mar); Red Hat ships its first public Linux release (1994 Oct)
- https://ubuntu.com/about
Supports
- Canonical's own account of Ubuntu 4.10, the first Ubuntu release, in October 2004
- Timeline: Ubuntu 4.10 is released (2004 Oct)
- https://kernelnewbies.org/Linux_2_6_24
Supports
- Control groups merged into the Linux 2.6.24 kernel release
- Timeline: Control groups enter Linux 2.6.24 (2008 Jan)
- https://0pointer.de/blog/projects/systemd.html
Supports
- Lennart Poettering's April 2010 post proposing systemd as a new init system
- Timeline: systemd is proposed (2010 Apr)
- https://www.docker.com/blog/docker-11-year-anniversary/
Supports
- Docker's own account of its March 2013 public demonstration at PyCon
- Timeline: Docker is demonstrated publicly (2013 Mar)
- https://blog.centos.org/2020/12/future-is-centos-stream/
Supports
- The CentOS Project's own December 2020 announcement shifting focus to CentOS Stream
- Timeline: CentOS Project shifts focus to CentOS Stream (2020 Dec)
- https://gtfobins.org/gtfobins/find/
Supports
- `find`'s sudo privilege-escalation technique via `-exec`
- Field Notes: A sudo allow-list is only as safe as its binaries
