]>
Commit | Line | Data |
---|---|---|
514094f9 | 1 | <?xml version="1.0"?> |
bc6fdcbf | 2 | <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" |
12b42c76 | 3 | "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"> |
d3fae78f | 4 | |
f48f7543 | 5 | <!-- |
db9ecf05 | 6 | SPDX-License-Identifier: LGPL-2.1-or-later |
96b2fb93 | 7 | Copyright © 2014 Josh Triplett |
f48f7543 ZJS |
8 | --> |
9 | ||
bc6fdcbf DT |
10 | <refentry> |
11 | <refnamediv> | |
12 | <refname/> | |
13 | <refpurpose/> | |
14 | </refnamediv> | |
af355f19 | 15 | |
bc6fdcbf | 16 | <refsect1 id='confd'> |
d3fae78f JT |
17 | <title>Configuration Directories and Precedence</title> |
18 | ||
e76c60bf ZJS |
19 | <para>Configuration files are read from directories in <filename>/etc/</filename>, |
20 | <filename>/run/</filename>, <filename>/usr/local/lib/</filename>, and <filename>/usr/lib/</filename>, in | |
37b22b3b | 21 | order of precedence, as listed in the SYNOPSIS section above. Files must have the |
e76c60bf ZJS |
22 | <literal>.conf</literal> extension. Files in <filename>/etc/</filename> override files with the same name |
23 | in <filename>/run/</filename>, <filename>/usr/local/lib/</filename>, and | |
24 | <filename>/usr/lib/</filename>. Files in <filename>/run/</filename> override files with the same name | |
25 | under <filename>/usr/</filename>.</para> | |
5ae4336a | 26 | |
e76c60bf ZJS |
27 | <para>All configuration files are sorted by their filename in lexicographic order, regardless of which of |
28 | the directories they reside in. If multiple files specify the same option, the entry in the file with the | |
29 | lexicographically latest name will take precedence. Thus, the configuration in a certain file may either | |
30 | be replaced completely (by placing a file with the same name in a directory with higher priority), or | |
31 | individual settings might be changed (by specifying additional settings in a file with a different name | |
32 | that is ordered later).</para> | |
d3fae78f | 33 | |
e76c60bf ZJS |
34 | <para>Packages should install their configuration files in <filename>/usr/lib/</filename> (distribution |
35 | packages) or <filename>/usr/local/lib/</filename> (local installs). Files in <filename>/etc/</filename> | |
36 | are reserved for the local administrator, who may use this logic to override the configuration files | |
37 | installed by vendor packages. It is recommended to prefix all filenames with a two-digit number and a | |
68117745 DDM |
38 | dash, to simplify the ordering of the files. It is recommended to use the range 10-40 for configuration |
39 | files in <filename>/usr/</filename> and the range 60-90 for configuration files in | |
40 | <filename>/etc/</filename> and <filename>/run/</filename>, to make sure that local and transient | |
41 | configuration files will always take priority over configuration files shipped by the OS vendor.</para> | |
e76c60bf ZJS |
42 | |
43 | <para>If the administrator wants to disable a configuration file supplied by the vendor, the recommended | |
44 | way is to place a symlink to <filename>/dev/null</filename> in the configuration directory in | |
45 | <filename>/etc/</filename>, with the same filename as the vendor configuration file. If the vendor | |
46 | configuration file is included in the initrd image, the image has to be regenerated.</para> | |
bc6fdcbf | 47 | </refsect1> |
d3fae78f | 48 | |
bc6fdcbf | 49 | <refsect1 id='main-conf'> |
e93549ef ZJS |
50 | <title>Configuration Directories and Precedence</title> |
51 | ||
a7a18878 | 52 | <para>The default configuration is set during compilation, so configuration is only needed when it is |
b83a59f8 ZJS |
53 | necessary to deviate from those defaults. The main configuration file is loaded from one of the |
54 | listed directories in order of priority, only the first file found is used: | |
55 | <filename>/etc/systemd/</filename>, | |
56 | <filename>/run/systemd/</filename>, | |
57 | <filename>/usr/local/lib/systemd/</filename>, | |
58 | <filename>/usr/lib/systemd/</filename>. | |
59 | The vendor version of the file contains commented out entries showing the defaults as a guide to the | |
60 | administrator. Local overrides can also be created by creating drop-ins, as described below. The main | |
61 | configuration file can also be edited for this purpose (or a copy in <filename>/etc/</filename> if it's | |
62 | shipped under <filename>/usr/</filename>), however using drop-ins for local configuration is recommended | |
63 | over modifications to the main configuration file.</para> | |
64 | ||
65 | <para>In addition to the main configuration file, drop-in configuration snippets are read from | |
a7a18878 ZJS |
66 | <filename>/usr/lib/systemd/*.conf.d/</filename>, <filename>/usr/local/lib/systemd/*.conf.d/</filename>, |
67 | and <filename>/etc/systemd/*.conf.d/</filename>. Those drop-ins have higher precedence and override the | |
68 | main configuration file. Files in the <filename>*.conf.d/</filename> configuration subdirectories are | |
69 | sorted by their filename in lexicographic order, regardless of in which of the subdirectories they | |
70 | reside. When multiple files specify the same option, for options which accept just a single value, the | |
71 | entry in the file sorted last takes precedence, and for options which accept a list of values, entries | |
72 | are collected as they occur in the sorted files.</para> | |
e76c60bf | 73 | |
a7a18878 ZJS |
74 | <para>When packages need to customize the configuration, they can install drop-ins under |
75 | <filename>/usr/</filename>. Files in <filename>/etc/</filename> are reserved for the local administrator, | |
76 | who may use this logic to override the configuration files installed by vendor packages. Drop-ins have to | |
77 | be used to override package drop-ins, since the main configuration file has lower precedence. It is | |
78 | recommended to prefix all filenames in those subdirectories with a two-digit number and a dash, to | |
68117745 DDM |
79 | simplify the ordering of the files. This also defines a concept of drop-in priorities to allow |
80 | OS vendors to ship drop-ins within a specific range lower than the range used by users. This should | |
81 | lower the risk of package drop-ins overriding accidentally drop-ins defined by users. It is recommended | |
82 | to use the range 10-40 for drop-ins in <filename>/usr/</filename> and the range 60-90 for drop-ins in | |
83 | <filename>/etc/</filename> and <filename>/run/</filename>, to make sure that local and transient drop-ins | |
84 | take priority over drop-ins shipped by the OS vendor.</para> | |
e93549ef | 85 | |
a7a18878 ZJS |
86 | <para>To disable a configuration file supplied by the vendor, the recommended way is to place a symlink |
87 | to <filename>/dev/null</filename> in the configuration directory in <filename>/etc/</filename>, with the | |
88 | same filename as the vendor configuration file.</para> | |
bc6fdcbf DT |
89 | </refsect1> |
90 | </refentry> |