Chapter 7. Type Enforcement

The preceding chapter explained role-based access control in SELinux. Role-based access control is a secondary access control model that supplements the primary SELinux access control model, type enforcement. This chapter explains the syntax and meaning of SELinux policy declarations related to type enforcement. The chapter concludes with an analysis of a small but typical domain policy: the Fedora Core 2 policy for the ping domain, which resides in the file ping.te.

The SELinux Type-Enforcement Model

As explained in Chapter 2, the SELinux type-enforcement model associates each process with a domain and each nonprocess object with a type.[7] Permissions define the operations that can be performed upon objects. Thus, you can think of a domain as a set of related processes that share the same permissions. For instance, the Apache web server process runs within the httpd_t domain and therefore possesses the permissions associated with that domain. The SELinux policy grants permissions to domains and specifies rules for transitioning between domains.

Permissions are encoded as access vectors, which specify the operations that a domain is authorized to perform on objects of a given type, such as files. Thus, you can think of an object’s type as implicitly referring to the set of rules—that is, the access vector—that specify the permissible operations on the object. For instance, access vector rules enable processes within the httpd_t domain to write to the web ...

Get SELinux now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.