@@ -1,5 +1,37 @@
# Policy Configuration Files
+- [setrans.conf](#setrans.conf)
+- [*secolor.conf*](#secolor.conf)
+- [*policy/policy.\<ver\>*](#policypolicy.ver)
+- [*contexts/customizable_types*](#contextscustomizable_types)
+- [*contexts/default_contexts*](#contextsdefault_contexts)
+- [*contexts/dbus_contexts*](#contextsdbus_contexts)
+- [*contexts/default_type*](#contextsdefault_type)
+- [*contexts/failsafe_context*](#contextsfailsafe_context)
+- [*contexts/initrc_context*](#contextsinitrc_context)
+- [*contexts/lxc_contexts*](#contextslxc_contexts)
+- [*contexts/netfilter_contexts* - Obsolete](#contextsnetfilter_contexts---obsolete)
+- [*contexts/openrc_contexts*](#contextsopenrc_contexts)
+- [*contexts/openssh_contexts*](#contextsopenssh_contexts)
+- [*contexts/removable_context*](#contextsremovable_context)
+- [*contexts/sepgsql_contexts*](#contextssepgsql_contexts)
+- [*contexts/snapperd_contexts*](#contextssnapperd_contexts)
+- [*contexts/securetty_types*](#contextssecuretty_types)
+- [*contexts/systemd_contexts*](#contextssystemd_contexts)
+- [*contexts/userhelper_context*](#contextsuserhelper_context)
+- [*contexts/virtual_domain_context*](#contextsvirtual_domain_context)
+- [*contexts/virtual_image_context*](#contextsvirtual_image_context)
+- [*contexts/x_contexts*](#contextsx_contexts)
+- [*contexts/files/file_contexts*](#contextsfilesfile_contexts)
+- [*contexts/files/file_contexts.local*](#contextsfilesfile_contexts.local)
+- [*contexts/files/file_contexts.homedirs*](#contextsfilesfile_contexts.homedirs)
+- [*contexts/files/file_contexts.subs*](#contextsfilesfile_contexts.subs)
+- [*contexts/files/file_contexts.subs_dist*](#contextsfilesfile_contexts.subs_dist)
+- [*contexts/files/media*](#contextsfilesmedia)
+- [*contexts/users/[seuser_id]*](#contextsusersseuser_id)
+- [*logins/\<linuxuser_id\>*](#loginslinuxuser_id)
+- [*users/local.users*](#userslocal.users)
+
Each file discussed in this section is relative to the policy name as
follows:
@@ -20,16 +52,16 @@ For example the simple
described in the Notebook examples could run at init 3 (i.e. no X-Windows)
and only require the following configuration files:
-- *./seusers* - For login programs.
-- *./policy/policy.<ver>* - The binary policy loaded into the kernel.
-- *./context/files/file_contexts* - To allow the filesystem to be relabeled.
+- *seusers* - For login programs.
+- *policy/policy.\<ver\>* - The binary policy loaded into the kernel.
+- *context/files/file_contexts* - To allow the filesystem to be relabeled.
If the simple policy is to run at init 5, (i.e. with X-Windows) then an
additional two files are required:
-- *./context/dbus_contexts* - To allow the dbus messaging service to run under
+- *context/dbus_contexts* - To allow the dbus messaging service to run under
SELinux.
-- *./context/x_contexts* - To allow the X-Windows service to run under SELinux.
+- *context/x_contexts* - To allow the X-Windows service to run under SELinux.
## *seusers*
@@ -43,13 +75,13 @@ typical login sequence would be:
entry.
- To determine the remaining context to be used as the security
context, read the
- [*./contexts/users/[seuser_id]*](#contextsusersseuser_id)
+ [*contexts/users/[seuser_id]*](#contextsusersseuser_id)
file. If this file is not present, then:
- Check for a default context in the
- [*./contexts/default_contexts*](#contextsdefault_contexts)
+ [*contexts/default_contexts*](#contextsdefault_contexts)
file. If no default context is found, then:
- Read the
- [*./contexts/failsafe_context*](#contextsfailsafe_context) file
+ [*contexts/failsafe_context*](#contextsfailsafe_context) file
to allow a fail safe context to be set.
Note: The *system_u* user is defined in this file, however there must be
@@ -89,9 +121,9 @@ file section.
For systems that do use these files:
- ***security_set_boolean_list**(3)* - Writes a *boolean.local* file if
-flag *permanent* = '*1*'.
+ flag *permanent* = '*1*'.
- ***security_load_booleans**(3)* - Will look for a *booleans* or
-*booleans.local* file here unless a specific path is specified.
+ *booleans.local* file here unless a specific path is specified.
Both files have the same format and contain one or more boolean names.
@@ -103,19 +135,14 @@ boolean_name value
**Where:**
-<table>
-<tbody>
-<tr>
-<td>boolean_name</td>
-<td>The name of the boolean.</td>
-</tr>
-<tr>
-<td>value</td>
-<td><p>The default setting for the boolean that can be one of the following:</p>
-<p>true | false | 1 | 0</p></td>
-</tr>
-</tbody>
-</table>
+*boolean_name*
+
+- The name of the boolean.
+
+*value*
+
+- The default setting for the boolean that can be one of the following:
+ - *true* | *false* | *1* | *0*
Note that if *SETLOCALDEFS* is set in the SELinux
[*/etc/selinux/config*](global_config_files.md#etcselinuxconfig) file, then
@@ -127,7 +154,7 @@ in the ***selinux_users_path**(3)*.
The *booleans.subs_dist* file (if present) will allow new boolean names
to be allocated to those in the active policy. This file was added
-because many older booleans began with 'allow' that made it difficult to
+because many older booleans began with '*allow*' that made it difficult to
determine what they did. For example the boolean *allow_console_login*
becomes more descriptive as *login_console_enabled*. If the
*booleans.subs_dist* file is present, then either name may be used.
@@ -143,13 +170,18 @@ policy_bool_name new_name
**Where:**
-- *policy_bool_name* - The policy boolean name.
-- *new_name* - The new boolean name.
+*policy_bool_name*
+
+- The policy boolean name.
+
+*new_name*
+
+- The new boolean name.
**Example:**
```
-# ./booleans.subs_dist
+# booleans.subs_dist
allow_auditadm_exec_content auditadm_exec_content
allow_console_login login_console_enabled
allow_cvs_read_shadow cvs_read_shadow
@@ -168,7 +200,7 @@ Supporting libselinux API functions are:
- ***security_get_boolean_names**(3)*
- ***security_set_boolean**(3)*
-## setrans.conf
+## *setrans.conf*
The ***setrans.conf**(8)* file is used by the ***mcstransd**(8)* daemon
(available in the mcstrans rpm). The daemon enables SELinux-aware
@@ -244,42 +276,41 @@ context_component string fg_color_name bg_color_name
**Where:**
-<table>
-<tbody>
-<tr>
-<td>color</td>
-<td>The color keyword.</td>
-</tr>
-<tr>
-<td>color_name</td>
-<td>A descriptive name for the colour (e.g. <em>red</em>).</td>
-</tr>
-<tr>
-<td>color_mask</td>
-<td>A colour mask starting with a hash (<em>#</em>) that describes the RGB colours with black being <em>#000000</em> and white being <em>#ffffff</em>.</td>
-</tr>
-<tr>
-<td>context_component</td>
-<td>The colour translation supports different colours on the context string components (<em>user</em>, <em>role</em>, <em>type</em> and <em>range</em>). Each component is on a separate line.</td>
-</tr>
-<tr>
-<td>string</td>
-<td><p>This is the context_component string that will be matched with the <em>raw</em> context component passed by <em><strong>selinux_raw_context_to_color</strong>(3)</em></p>
-<p>A wildcard '<em><strong>*</strong></em>' may be used to match any undefined <em>string</em> for the <em>user</em>, <em>role</em> and <em>type context_component</em> entries only</p>
-<p>A wildcard '<em><strong>*</strong></em>' may be used to match any undefined <em>string</em> for the <em>user</em>, <em>role</em> and <em>type context_component</em> entries only.</p></td>
-</tr>
-<tr>
-<td>fg_color_name</td>
-<td><p>The <em>color_name</em> string that will be used as the foreground colour.</p>
-<p>A <em>color_mask</em> may also be used.</p></td>
-</tr>
-<tr>
-<td>bg_color_name</td>
-<td><p>The <em>color_name</em> string that will be used as the background colour.</p>
-<p>A <em>color_mask</em> may also be used.</p></td>
-</tr>
-</tbody>
-</table>
+*color*
+
+- The color keyword.
+
+*color_name*
+
+- A descriptive name for the colour (e.g. *red*).
+
+*color_mask*
+
+- A colour mask starting with a hash '*#*' that describes the RGB colours
+ with black being *#000000* and white being *#ffffff*.
+
+*context_component*
+
+- The colour translation supports different colours on the context string
+ components (*user*, *role*, *type* and *range*). Each component is on a
+ separate line.
+
+*string*
+
+- This is the *context_component* string that will be matched with the
+ *raw* context component passed by ***selinux_raw_context_to_color**(3)*.
+ A wildcard '*\**' may be used to match any undefined *string* for the
+ *user*, *role* and *type* *context_component* entries only.
+
+*fg_color_name*
+
+- The *color_name* string that will be used as the foreground colour.
+ A *color_mask* may also be used.
+
+*bg_color_name*
+
+- The *color_name* string that will be used as the background colour.
+ A *color_mask* may also be used.</p></td>
**Example file contents:**
@@ -317,7 +348,7 @@ user : role : type : range
black white white black tan orange black green
```
-## *policy/policy.<ver>*
+## *policy/policy.\<ver\>*
This is the binary policy file that is loaded into the kernel to enforce
policy and is built by either ***checkpolicy**(8)* or ***semodule**(8)*. Life
@@ -337,7 +368,7 @@ section.
The ***customizable_types**(5)* file contains a list of types that will
not be relabeled by the ***setfiles**(8)* or **restorecon**(8) commands.
The commands check this file before relabeling and excludes those in the
-list unless the -F flag is used (see the man pages).
+list unless the *-F* flag is used (see the man pages).
**The file format is as follows:**
@@ -347,14 +378,11 @@ type
**Where:**
-<table>
-<tbody>
-<tr>
-<td>type</td>
-<td>The type defined in the policy that needs to excluded from relabeling. An example is when a file has been purposely relabeled with a different type to allow an application to work.</td>
-</tr>
-</tbody>
-</table>
+*type*
+
+- The type defined in the policy that needs to excluded from relabeling.
+ An example is when a file has been purposely relabeled with a different
+ type to allow an application to work.
**Example file contents:**
@@ -384,8 +412,8 @@ login applications) where:
been determined as described in the [*seusers*](#seusers) file
section.
3. The login applications will check the
- [*./contexts/users/[seuser_id]*](#contextsusersseuser_id) file
- first and if no valid entry, will then look in the [seuser_id]
+ [*contexts/users/[seuser_id]*](#contextsusersseuser_id) file
+ first and if no valid entry, will then look in the *[seuser_id]*
file for a default context to use.
**The file format is as follows:**
@@ -396,16 +424,14 @@ role:type[:range] role:type[:range] ...
**Where:**
-<table>
-<tbody>
-<tr>
-<td>role:type[:range]</td>
-<td><p>The file contains one or more lines that consist of role:type[:range] pairs (including the MLS / MCS level or range if applicable).</p>
-<p>The entry at the start of a new line corresponds to the partial role:type[:range] context of (generally) the login application.</p>
-<p>The other role:type[:range] entries on that line represent an ordered list of valid contexts that may be used to set the users context. </p></td>
-</tr>
-</tbody>
-</table>
+*role:type[:range]*
+
+- The file contains one or more lines that consist of *role:type[:range]*
+ pairs (including the MLS / MCS *level* or *range* if applicable).
+ - The entry at the start of a new line corresponds to the partial
+ *role:type[:range]* context of (generally) the login application.
+ - The other *role:type[:range]* entries on that line represent an ordered
+ list of valid contexts that may be used to set the users context.
**Example file contents:**
@@ -420,7 +446,7 @@ system_r:xdm_t:s0 user_r:user_t:s0
**Supporting libselinux API functions are:**
-Note that the *./contexts/users/[seuser_id]* file is also read by some of
+Note that the *contexts/users/[seuser_id]* file is also read by some of
these functions.
- ***selinux_contexts_path**(3)*
@@ -500,14 +526,10 @@ role:type
**Where:**
-<table>
-<tbody>
-<tr>
-<td>role:type</td>
-<td>The file contains one or more lines that consist of role:type entries. There should be one line for each role defined within the policy.</td>
-</tr>
-</tbody>
-</table>
+*role:type*
+
+- The file contains one or more lines that consist of *role:type* entries.
+ There should be one line for each role defined within the policy.
**Example file contents:**
@@ -539,14 +561,10 @@ role:type[:range]
**Where:**
-<table>
-<tbody>
-<tr>
-<td>role:type[:range]</td>
-<td>A single line that has a valid context to allow an administrator access to the system, including the MLS / MCS level or range if applicable.</td>
-</tr>
-</tbody>
-</table>
+*role:type[:range]*
+
+- A single line that has a valid context to allow an administrator access
+ to the system, including the MLS / MCS *level* or *range* if applicable.
**Example file contents:**
@@ -581,14 +599,10 @@ user:role:type[:range]
**Where:**
-<table>
-<tbody>
-<tr>
-<td>user:role:type[:range]</td>
-<td>The file contains one line that consists of a security context, including the MLS / MCS level or range if applicable.</td>
-</tr>
-</tbody>
-</table>
+*user:role:type[:range]*
+
+- The file contains one line that consists of a security context,
+ including the MLS / MCS *level* or *range* if applicable.
**Example file contents:**
@@ -618,27 +632,26 @@ content = "security_context"
**Where:**
-<table>
-<tbody>
-<tr>
-<td>process</td>
-<td>A single <em>process</em> entry that contains the lxc domain security context, including the MLS / MCS level or range if applicable.</td>
-</tr>
-<tr>
-<td>file</td>
-<td>A single <em>file</em> entry that contains the lxc file security context, including the MLS / MCS level or range if applicable.</td>
-</tr>
-<tr>
-<td>content</td>
-<td>A single <em>content</em> entry that contains the lxc content security context, including the MLS / MCS level or range if applicable.</td>
-</tr>
-<tr>
-<td><p>sandbox_kvm_process</p>
-<p>sandbox_lxc_process</p></td>
-<td>These entries may be present and contain the security context.</td>
-</tr>
-</tbody>
-</table>
+*process*
+
+- A single *process* entry that contains the lxc domain security context,
+ including the MLS / MCS *level* or *range* if applicable.
+
+*file*
+
+- A single *file* entry that contains the lxc file security context,
+ including the MLS / MCS *level* or *range* if applicable.</td>
+
+*content*
+
+- A single *content* entry that contains the lxc content security context,
+ including the MLS / MCS *level* or *range* if applicable.</td>
+
+*sandbox_kvm_process*
+
+*sandbox_lxc_process*
+
+- These entries may be present and contain the security context.
**Example file contents:**
@@ -711,14 +724,10 @@ user:role:type[:range]
**Where:**
-<table>
-<tbody>
-<tr>
-<td>user:role:type[:range]</td>
-<td>The file contains one line that consists of a security context, including the MLS / MCS level or range if applicable.</td>
-</tr>
-</tbody>
-</table>
+*user:role:type[:range]*
+
+- The file contains one line that consists of a security context,
+ including the MLS / MCS *level* or *range* if applicable.
**Example file contents:**
@@ -743,23 +752,22 @@ object_type object_name context
**Where:**
-<table>
-<tbody>
-<tr>
-<td><em><em>object_type</em></em></td>
-<td><em><em>This is the string representation of the object type.</em></em></td>
-</tr>
-<tr>
-<td><em><em>object_name</em></em></td>
-<td><p><em><em>These are the object names of the specific database objects. </em></em></p>
-<p><em><em>The entry can contain '</em><em>*</em><em>' for wildcard matching or '</em><em>?</em><em>' for substitution. Note that if the '</em><em>*</em><em>' is used, then be aware that the order of entries in the file is important. The '</em><em>*</em><em>' on its own is used to ensure a default fallback context is assigned and should be the last entry in the </em><em>object_type</em><em> block.</em></em></p></td>
-</tr>
-<tr>
-<td><em><em>context</em></em></td>
-<td><em><em>The security </em><em>context</em><em> that will be applied to the object. </em></em></td>
-</tr>
-</tbody>
-</table>
+*object_type*
+
+- This is the string representation of the object type.
+
+*object_name*
+
+- These are the object names of the specific database objects.
+ The entry can contain '*\**' for wildcard matching or '*?*' for
+ substitution. Note that if the '*\**' is used, then be aware that the order
+ of entries in the file is important. The '*\**' on its own is used to ensure
+ a default fallback context is assigned and should be the last entry in the
+ *object_type* block.
+
+*context*
+
+- The security *context* that will be applied to the object.
**Example file contents:**
@@ -800,14 +808,9 @@ type
**Where:**
-<table>
-<tbody>
-<tr>
-<td>type</td>
-<td>Zero or more type entries that are defined in the policy for tty devices.</td>
-</tr>
-</tbody>
-</table>
+*type*
+
+- Zero or more type entries that are defined in the policy for tty devices.
**Example file contents:**
@@ -833,18 +836,15 @@ service_class = security_context
**Where:**
-<table>
-<tbody>
-<tr>
-<td>service_class</td>
-<td>One or more entries that relate to the <em>systemd</em> service (e.g. runtime, transient).</td>
-</tr>
-<tr>
-<td>security_context</td>
-<td>The security context, including the MLS / MCS level or range if applicable of the service to be run.</td>
-</tr>
-</tbody>
-</table>
+*service_class*
+
+- One or more entries that relate to the ***systemd**(1)* service (e.g.
+ runtime, transient).
+
+*security_context*
+
+- The security context, including the MLS / MCS *level* or *range* if
+ applicable of the service to be run.
**Example file contents:**
@@ -860,7 +860,7 @@ runtime=system_u:object_r:systemd_runtime_unit_file_t:s0
## *contexts/userhelper_context*
This file contains the default security context used by the
-system-config-* applications when running from root.
+system-config-\* applications when running from root.
**The file format is as follows:**
@@ -870,14 +870,10 @@ security_context
**Where:**
-<table>
-<tbody>
-<tr>
-<td>security_context</td>
-<td>The file contains one line that consists of a full security context, including the MLS / MCS level or range if applicable.</td>
-</tr>
-</tbody>
-</table>
+*security_context*
+
+- The file contains one line that consists of a full security context,
+ including the MLS / MCS *level* or *range* if applicable.
**Example file contents:**
@@ -931,7 +927,7 @@ system_u:object_r:virt_content_t:s0
The ***x_contexts**(5)* file provides the default security contexts for
the X-Windows SELinux security extension. The usage is discussed in the
-[SELinux X-Windows Support](x_windows.md#x-windows-selinux-support)section.
+[SELinux X-Windows Support](x_windows.md#x-windows-selinux-support) section.
The MCS / MLS version of the file has the appropriate level or
range information added.
@@ -944,23 +940,27 @@ selection PRIMARY system_u:object_r:clipboard_xselection_t:s0
**Where:**
-<table>
-<tbody>
-<tr>
-<td><em><em>object_type</em></em></td>
-<td><em><em>These are types of object supported and valid entries</em><em> are: </em><em>client</em><em>, </em><em>property</em><em>, </em><em>poly_property</em><em>, </em><em>extension</em><em>, </em><em>selection</em><em>, </em><em>poly_selection</em><em> and </em><em>events</em><em>.</em></em></td>
-</tr>
-<tr>
-<td><em><em>object_name</em></em></td>
-<td><p><em><em>These are the object names of the specific X-server resource such as </em><em>PRIMARY</em><em>, </em><em>CUT_BUFFER0</em><em> etc. They are generally defined in the X-server source code (</em><em>protocol.txt</em><em> and </em><em>BuiltInAtoms </em><em>in the </em><em>dix</em><em> directory of the </em><em>xorg-server</em><em> source package). </em></em></p>
-<p><em><em>This can contain '</em><em>*</em><em>' for 'any' or '</em><em>?</em><em>' for 'substitute' (see the </em><em>CUT_BUFFER?</em><em> entry where the '</em><em>?</em><em>' would be substituted for a number between 0 and 7 that represents the number of these buffers).</em></em></p></td>
-</tr>
-<tr>
-<td><em><em>context</em></em></td>
-<td><em><em>This is the security context that will be applied to the object. For MLS/MCS systems there would be the additional MLS label.</em></em></td>
-</tr>
-</tbody>
-</table>
+
+*object_type*
+
+- These are types of object supported and valid entries are: *client*,
+ *property*, *poly_property*, *extension*, *selection*, *poly_selection*
+ and *events*.
+
+*object_name*
+
+- These are the object names of the specific X-server resource such as
+ *PRIMARY*, *CUT_BUFFER0* etc. They are generally defined in the X-server
+ source code (*protocol.txt* and *BuiltInAtoms* in the *dix* directory of
+ the *xorg-server* source package). This can contain '*\**' for 'any'
+ or '*?*' for 'substitute' (see the *CUT_BUFFER?* entry where the '*?*'
+ would be substituted for a number between 0 and 7 that represents the
+ number of these buffers).
+
+*context*
+
+- This is the security context that will be applied to the object.
+ For MLS/MCS systems there would be the additional MLS label.
**Supporting libselinux API functions are:**
@@ -973,12 +973,12 @@ selection PRIMARY system_u:object_r:clipboard_xselection_t:s0
## *contexts/files/file_contexts*
The ***file_contexts**(5)* file is managed by the ***semodule**(8)* and
-***semanage**(8)* commands<a href="#fnp1" class="footnote-ref" id="fnpcf1"><strong><sup>1</sup></strong></a>
+***semanage**(8)* commands[^fn_pcf_1]
as the policy is updated (adding or removing modules or updating the base),
and therefore should not be edited.
The file is used by a number of SELinux-aware commands (***setfiles**(8)*,
-***fixfiles**(8)*, ***restorecon**(8)*) to relabel either part or all of the
+***fixfiles**(8)*, ***restorecon**(8)* to relabel either part or all of the
file system.
Note that users home directory file contexts are not present in this
@@ -1037,8 +1037,8 @@ Perl compatible regular expression (PCRE) internal format.
- ***selinux_file_context_homedir_path**(3)*
- ***selinux_homedir_context_path**(3)*
-## contexts/files/file_contexts.subs
-## contexts/files/file_contexts.subs_dist
+## *contexts/files/file_contexts.subs*
+## *contexts/files/file_contexts.subs_dist*
These files allow substitution of file names (*.subs* for local use and
*.subs_dist* for GNU / Linux distributions use) for the *libselinux*
@@ -1083,18 +1083,14 @@ media_id file_context
**Where:**
-<table>
-<tbody>
-<tr>
-<td>media_id</td>
-<td>The media identifier (those known are: cdrom, floppy, disk and usb).</td>
-</tr>
-<tr>
-<td>file_context</td>
-<td>The context to be used for the device. Note that it does not have the MLS / MCS level).</td>
-</tr>
-</tbody>
-</table>
+*media_id*
+
+- The media identifier (those known are: cdrom, floppy, disk and usb).
+
+*file_context*
+
+- The context to be used for the device. Note that it does not have the
+ MLS / MCS level).
**Example file contents:**
@@ -1145,7 +1141,7 @@ system_r:init_t:s0 unconfined_r:unconfined_t:s0
- ***get_ordered_context_list**(3)*
- ***get_ordered_context_list_with_level**(3)*
-## *logins/<linuxuser_id>*
+## *logins/\<linuxuser_id\>*
These optional files are used by SELinux-aware login applications such
as PAM (using the *pam_selinux* module) to obtain an SELinux user name
@@ -1170,27 +1166,22 @@ service_name:seuser_id:level
**Where:**
-<table>
-<tbody>
-<tr>
-<td>service_name</td>
-<td>The name of the service.</td>
-</tr>
-<tr>
-<td>seuser_id</td>
-<td>The SELinux user name.</td>
-</tr>
-<tr>
-<td>level</td>
-<td>The run level</td>
-</tr>
-</tbody>
-</table>
+*service_name*
+
+- The name of the service.
+
+*seuser_id*
+
+- The SELinux user name.
+
+*level*
+
+- The run level
**Example file contents:**
```
-# ./logins/ipa example entries
+# logins/ipa example entries
ipa_service:user_u:s0
another_service:unconfined_u:s0
```
@@ -1199,7 +1190,7 @@ another_service:unconfined_u:s0
- ***getseuser**(3)*
-## users/local.users
+## *users/local.users*
**NOTE: These were removed in libselinux 3.0**
@@ -1218,11 +1209,9 @@ Note that if *SETLOCALDEFS* is set in the SELinux
in the ***selinux_booleans_path**(3)*, and also a *local.users* file
in the ***selinux_users_path**(3)*.
-<section class="footnotes">
-<ol>
-<li id="fnp1"><p>As each module would have its own file_contexts component that is either added or removed from the policies overall /etc/selinux/<SELINUXTYPE>/contexts/ files/file_contexts file.<a href="#fnpcf1" class="footnote-back">↩</a></p></li>
-</ol>
-</section>
+[^fn_pcf_1]: As each module would have its own *file_contexts* component that
+is either added or removed from the policies overall
+*/etc/selinux/\<SELINUXTYPE\>/contexts/files/file_contexts* file.
<!-- %CUTHERE% -->
Add a TOC to aid navigation and convert HTML tables to markdown unordered lists. Signed-off-by: Richard Haines <richard_c_haines@btinternet.com> --- src/policy_config_files.md | 477 ++++++++++++++++++------------------- 1 file changed, 233 insertions(+), 244 deletions(-)