Tracing why the world needs AppArmor: the limits of DAC, which only restricts based on user and group, the birth of AppArmor from the Immunix project, its adoption by Novell and SUSE, its integration into Linux kernel 2.6.36, and its adoption by Docker, containerd, and ChromeOS.

In episode 0 we set up the environment: installing the AppArmor userspace tools and verifying that the system runs with AppArmor active. In this episode we'll take a brief break from the hands-on work and answer the most fundamental question: why does AppArmor exist? Without understanding the problem it's meant to solve, you'll only be memorizing commands without ever understanding when and why each command is needed.
We'll trace the history of AppArmor's birth, understand the limits of Linux's classic permission system (DAC), and see how path-based MAC changed the security rules at the operating system level. As the saying goes, we need to understand the past so we don't repeat the same mistakes in the future.
Before AppArmor was born, Linux relied on DAC (Discretionary Access Control) — the permission system you learned in episode 0: files have owners, and owners get to decide who can access them. It's called discretionary because access decisions rest with the owner of the object (the user), who can "grant" access to anyone at will.
The problem is that DAC has three fundamental weaknesses:
chmod rules don't apply to it. It's like giving one person the keys to the whole building.The most fitting analogy: DAC is like a building door with an ID card. As long as you have a card (a valid user), you can enter any room whose door isn't locked — even rooms that have nothing to do with your job. A card in a thief's hands works just as well.
From those limits the concept of MAC (Mandatory Access Control) was born. Unlike DAC, which is "discretionary" (up to the owner), MAC is "mandatory": access rules are decided by a centralized policy, not by the object's owner. File owners can't "grant" access beyond what the policy allows.
The key principle to remember throughout this series:
With MAC, even root is constrained by policy.
In the MAC world, every process running under protection is given a set of rules that determine which objects it may touch. The policy decides which process-rule pairings apply. Root is just another process — if the policy doesn't allow it to access something, the access is denied, even with a UID of zero.
To make the difference between these two worlds clearer, let's compare DAC and MAC side by side:
| Aspect | DAC (classic) | MAC (AppArmor) |
|---|---|---|
| Who decides access | Object owner (user) | Centralized policy (profile) |
| Decision basis | User and group | Path of the file the process accesses |
| Root | Unrestricted | Restricted by policy |
| File owner | Free to change its permissions | Cannot grant access beyond policy |
| Default principle | Open unless locked | Closed unless allowed |
Consider one scenario to feel the difference. Imagine a web server exploited by an attacker: in the DAC world, the web server process runs as user www-data — once the application is exploited, the attacker can read any file www-data can read, including application config files and database credentials. In the MAC world, that process runs under an AppArmor profile — the attacker stays trapped inside the profile's boundaries and cannot touch files outside the allowed path list, whatever the file permissions say. That's the power AppArmor brings to Linux: limiting the damage, not just preventing attacks.
Before going further, let's clear up some misconceptions that often make people afraid of AppArmor:
chmod and chown.AppArmor has a unique journey — it was born not in a state institution like its other MAC cousin, but in a small, ambitious company.
AppArmor started as part of Immunix, a Linux distribution created by WireX Communications in the late 1990s, led by Crispin Cowan. The focus back then was security: shipping a safer kernel and tools, including the path-based process confinement mechanism that would become AppArmor.
In 2005, Novell acquired Immunix's assets and brought AppArmor into SUSE Linux. From that point on, AppArmor was raised in the SUSE ecosystem — used as the default MAC mechanism in SUSE Linux Enterprise and openSUSE. This heritage is also why SUSE remains AppArmor's spiritual home to this day.
For years AppArmor lived outside the mainline kernel, as a separate patch. In October 2010, AppArmor was finally integrated into Linux kernel 2.6.36 — available to every distro. From then on, AppArmor became an official part of the kernel that anyone could use.
After entering the kernel, adoption moved fast. Ubuntu made AppArmor its default MAC, and Debian followed — using AppArmor to confine system services like dhcpcd, tcpdump, and the package sandbox mechanism. These two most widely used server distros in the world made AppArmor the most widely deployed MAC in the Linux ecosystem.
Two major adoptions locked in AppArmor's position in the modern era:
docker-default profile with no extra configuration. This was AppArmor's gateway into the container and Kubernetes world.That long journey can be summarized in a single timeline:
1999 Lahir di proyek Immunix (WireX Communications)
2005 Diakuisisi Novell, dibesarkan di ekosistem SUSE
2010 Masuk kernel Linux 2.6.36 (Oktober)
Menjadi MAC default di Ubuntu dan Debian
Diadopsi Docker dan containerd untuk kontainer
Diadopsi ChromeOS via Kernel Self Protection Project
2026 Userspace 5.0.1 (Juni), transisi policy 4.x ke 5.xAppArmor is more than just a kernel — it's a complete ecosystem that keeps evolving. In June 2026, AppArmor userspace reached version 5.0.1, and a major transition is underway: from policy 4.x to 5.x. This change touches policy syntax and models, but the underlying principles remain the same. The modern tools you'll use throughout this series include:
apparmor_parser — the core tool for loading and unloading profiles into the kernel.aa-status — reads the status and the list of active profiles.aa-genprof and aa-logprof — profile creator and updater driven by denial logs.This ecosystem is what makes modern AppArmor far friendlier than its old reputation as "the difficult MAC". With mature userspace and a default presence in major distros, learning AppArmor today feels like learning a built-in Linux feature — not an exotic technology.
chmod/firewalls. The three work on different layers. You still need DAC, and you still need a firewall — AppArmor complements, not replaces.In episode 1 we traced why AppArmor was born: the limits of DAC that only restrict based on user and group, the MAC concept that constrains everyone — including root — through centralized policy, its birth at Immunix, adoption by Novell and SUSE, integration into kernel 2.6.36 in 2010, default adoption by Ubuntu and Debian, and finally Docker, containerd, and ChromeOS.
The core takeaways:
Understanding this "why" is the foundation for understanding "how" AppArmor works. In episode 2, we'll cover the basic concepts & core architecture — dissecting per-application profiles, r w m k file rules, enforce vs complain modes, a comparison of AppArmor with SELinux, and the kernel LSM and userspace components that make up the whole system. Keep your momentum, because this is where you start truly understanding how AppArmor works from the inside!