Chapter 51. Customizing SELinux Policy
51.1. Introduction
In earlier releases of Red Hat Enterprise Linux it was necessary to install the
selinux-policy-targeted-sources
packages and then to create a local.te
file in the /etc/selinux/targeted/src/policy/domains/misc
directory. You could use the audit2allow
utility to translate the AVC messages into allow rules, and then rebuild and reload the policy.
The problem with this was that every time a new policy package was released it would have to execute the Makefile in order to try to keep the local policy.
In Red Hat Enterprise Linux 5, this process has been completely revised. The "sources" rpm packages have been completely removed, and policy packages are treated more like the kernel. To look at the sources used to build the policy, you need to install the source rpm,
selinux-policy-XYZ.src.rpm
. A further package, selinux-policy-devel
, has also been added, which provides further customization functionality.
51.1.1. Modular Policy
Red Hat Enterprise Linux introduces the concept of modular policy. This allows vendors to ship SELinux policy separately from the operating system policy. It also allows administrators to make local changes to policy without worrying about the next policy install. The most important command that was added was
semodule
.
semodule
is the tool used to manage SELinux policy modules, including installing, upgrading, listing and removing modules. You can also use semodule
to force a rebuild of policy from the module store and/or to force a reload of policy without performing any other transaction. semodule
acts on module packages created by semodule_package
. Conventionally, these files have a .pp suffix (policy package), although this is not mandated in any way.
51.1.1.1. Listing Policy Modules
To list the policy modules on a system, use the
semodule -l
command:
~]# semodule -l
amavis 1.1.0
ccs 1.0.0
clamav 1.1.0
dcc 1.1.0
evolution 1.1.0
iscsid 1.0.0
mozilla 1.1.0
mplayer 1.1.0
nagios 1.1.0
oddjob 1.0.1
pcscd 1.0.0
pyzor 1.1.0
razor 1.1.0
ricci 1.0.0
smartmon 1.1.0
Note
This command does not list the base policy module, which is also installed.
The
/usr/share/selinux/targeted/
directory contains a number of policy package (*.pp) files. These files are included in the selinux-policy
rpm and are used to build the policy file.