Introducing CIL
CIL has been designed to be the main language to have policies built in, and is the lowest readable format. After CIL, the SELinux code is transformed in binary to send off to the Linux kernel (and SELinux subsystem) for loading in memory.
Administrators might be inclined to think that the binary files, generated when building a SELinux policy module using the reference policy method, are the final binaries. However, as we've seen in Chapter 1, Fundamental SELinux Concepts, the semodule
command converts and translates this into CIL before building the final format.
Let's see how these translations work and what we can learn from them.
Translating .pp files to CIL
When a non-CIL SELinux policy module is loaded, the semodule
command is designed to first consider the module as an unknown format, and extract the High Level Language (HLL) information from it. HLL is an abstract term that the SELinux utilities use to define any SELinux source format...