5 Extending SELinux Policies with Multi-Category Security

Multi-Category Security (MCS) extends the SELinux targeted and Multi-Level Security (MLS) policies so you can assign category labels to processes and files. With MCS, files can be accessed only by processes or users that are assigned to the same categories that apply to the file. MCS is applied after all other security checks have been performed. Thus MCS is typically used to further restrict access. Category tags range from c0 to c1023, but you can define text labels for these category values to make them easier to work with. The mcstrans service can be used to translate between the category values and text labels when handling system inputs and outputs.

While MLS can be used to define different security levels or sensitivity for data, MCS can be used to group data for different purposes. For example, you might run the same service for several different projects on a system and data within each project that might have different levels of sensitivity. Users must only be granted access to data that meets their sensitivity clearance for a particular project. MCS enforces this restriction by associating a category tag with each project. The resulting security context of a file or process is a combination of SELinux user, SELinux role, SELinux type, MLS sensitivity level, and MCS category.

Table 5-1 Matrix to illustrate data sensitivity and category application

Sensitivity Category
Not specified Accountancy Marketing Development
Unclassified s0 s0:c0 s0:c1 s0:c2
Internal s1 s1:c0 s1:c1 s1:c2
Restricted s2 s2:c0 s2:c1 s2:c2
Highly Restricted s3 s3:c0 s3:c1 s3:c2

In the example table, a highly privileged user in the accountancy department (c0) with a requirement to access highly restricted data (s3) might have the following security context defined:

user_u:user_r:user_t:s3:c0