SELinux core concepts

  1. Programs execute in sandboxes called domains

  2. Resources (objects) live in protection domains called types

  3. Policies describe the ways those resources can be used through access vectors and transition rules

  4. Each process or object has an associated security descriptor which consists of identity, role and domain.

  5. At runtime when a process wants access to an object the security descriptors of both are matched and compared and access is only allowed when the policies allow it.

  6. All access rules are kept in policy files and there are tens of thousands of access rules.

  7. Roles define which domains a user can enter. They do not provide access by themselves.

  8. A user can have several roles but only one active role at any time. No role merging is done. The system itself knows only four roles (system, staff, sysadm, user) and few installations add more roles.