Chapter 4. Example Policy Reference - dhcpd
This chapter provides an understanding of how the policy works with the
dhcpd daemon. This daemon ships as part of the dhcp
package. This chapter first discusses the locations and purposes of key
policy files, and then policy types are explained. This chapter serves as a
reference analysis that can be applied to all of the targeted daemons.
Analysis in this file results from direct investigation of the policy files
as well as extensive usage of apol, which is
discussed in Chapter 6 Tools for Manipulating and Analyzing SELinux.
This section covers the various top level files that comprise the policy
for dhcpd. Refer to Section 4.2 Policy Types - dhcpd for a description of what the types
are allowed to do.
- $SELINUX_POLICY/domains/program/dhcpd.te
This file defines the policy rules for the dhcpd domain,
dhcpd_t. These rules are discussed
in Section 4.2 Policy Types - dhcpd. Because the type enforcement
file calls macros that are defined elsewhere, the
dhcpd.te file is only the starting point for
the policy. The policy building process expands the macros into
many more lines of rules.
- $SELINUX_POLICY/file_contexts/program/dhcpd.fc
This defines the security context for files associated with the
dhcpd server daemon, assigning them one of the
dhcp_<*>_t
types:
# dhcpd
/etc/dhcpd.conf -- system_u:object_r:dhcp_etc_t
/etc/dhcp3(/.*)? system_u:object_r:dhcp_etc_t
/usr/sbin/dhcpd.* -- system_u:object_r:dhcpd_exec_t
/var/lib/dhcp(3)?/dhcpd\.leases.* -- \
system_u:object_r:dhcpd_state_t
/var/run/dhcpd\.pid -d system_u:object_r:dhcpd_var_run_t
ifdef(`dhcp_defined', `', `
/var/lib/dhcp(3)? -d system_u:object_r:dhcp_state_t
define(`dhcp_defined')
') |
| Note |
---|
| As you are looking for dhcpd.fc, you see
there are a large number of file contexts files in
$SELINUX_POLICY/file_contexts/program/. Most of
these files are unused. The context files are not pulled into the
policy without a corresponding TE file in the
$SELINUX_POLICY/domains/ path.
|
The context file contains an ifdef
statement; the purpose here is to make certain the shared directory
/var/lib/dhcp is available without declaring it
multiple times. This is discussed in detail in Example 3-1.