]> git.ipfire.org Git - thirdparty/systemd.git/blame - man/tmpfiles.d.xml
Merge pull request #4509 from keszybz/foreach-word-quoted
[thirdparty/systemd.git] / man / tmpfiles.d.xml
CommitLineData
5fb13eb5 1<?xml version='1.0'?> <!--*- Mode: nxml; nxml-child-indent: 2; indent-tabs-mode: nil -*-->
12b42c76 2<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
4149f86d
BP
3<!--
4 This file is part of systemd.
5
6 Copyright 2010 Brandon Philips
7
8 systemd is free software; you can redistribute it and/or modify it
5430f7f2
LP
9 under the terms of the GNU Lesser General Public License as published by
10 the Free Software Foundation; either version 2.1 of the License, or
4149f86d
BP
11 (at your option) any later version.
12
13 systemd is distributed in the hope that it will be useful, but
14 WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5430f7f2 16 Lesser General Public License for more details.
4149f86d 17
5430f7f2 18 You should have received a copy of the GNU Lesser General Public License
4149f86d
BP
19 along with systemd; If not, see <http://www.gnu.org/licenses/>.
20-->
21<refentry id="tmpfiles.d">
22
302fbdf2
ZJS
23 <refentryinfo>
24 <title>tmpfiles.d</title>
25 <productname>systemd</productname>
26
27 <authorgroup>
28 <author>
29 <contrib>Documentation</contrib>
30 <firstname>Brandon</firstname>
31 <surname>Philips</surname>
32 <email>brandon@ifup.org</email>
33 </author>
34 </authorgroup>
35 </refentryinfo>
36
37 <refmeta>
38 <refentrytitle>tmpfiles.d</refentrytitle>
39 <manvolnum>5</manvolnum>
40 </refmeta>
41
42 <refnamediv>
43 <refname>tmpfiles.d</refname>
44 <refpurpose>Configuration for creation, deletion and cleaning of
45 volatile and temporary files</refpurpose>
46 </refnamediv>
47
48 <refsynopsisdiv>
49 <para><filename>/etc/tmpfiles.d/*.conf</filename></para>
50 <para><filename>/run/tmpfiles.d/*.conf</filename></para>
51 <para><filename>/usr/lib/tmpfiles.d/*.conf</filename></para>
52 </refsynopsisdiv>
53
54 <refsect1>
55 <title>Description</title>
56
57 <para><command>systemd-tmpfiles</command> uses the configuration
58 files from the above directories to describe the creation,
59 cleaning and removal of volatile and temporary files and
60 directories which usually reside in directories such as
61 <filename>/run</filename> or <filename>/tmp</filename>.</para>
62
63 <para>Volatile and temporary files and directories are those
64 located in <filename>/run</filename> (and its alias
65 <filename>/var/run</filename>), <filename>/tmp</filename>,
66 <filename>/var/tmp</filename>, the API file systems such as
67 <filename>/sys</filename> or <filename>/proc</filename>, as well
68 as some other directories below <filename>/var</filename>.</para>
69
70 <para>System daemons frequently require private runtime
71 directories below <filename>/run</filename> to place communication
72 sockets and similar in. For these, consider declaring them in
73 their unit files using <varname>RuntimeDirectory=</varname> (see
74 <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>
75 for details), if this is feasible.</para>
76 </refsect1>
77
78 <refsect1>
79 <title>Configuration Format</title>
80
81 <para>Each configuration file shall be named in the style of
82 <filename><replaceable>package</replaceable>.conf</filename> or
83 <filename><replaceable>package</replaceable>-<replaceable>part</replaceable>.conf</filename>.
84 The second variant should be used when it is desirable to make it
85 easy to override just this part of configuration.</para>
86
87 <para>Files in <filename>/etc/tmpfiles.d</filename> override files
88 with the same name in <filename>/usr/lib/tmpfiles.d</filename> and
89 <filename>/run/tmpfiles.d</filename>. Files in
90 <filename>/run/tmpfiles.d</filename> override files with the same
91 name in <filename>/usr/lib/tmpfiles.d</filename>. Packages should
92 install their configuration files in
93 <filename>/usr/lib/tmpfiles.d</filename>. Files in
94 <filename>/etc/tmpfiles.d</filename> are reserved for the local
95 administrator, who may use this logic to override the
96 configuration files installed by vendor packages. All
97 configuration files are sorted by their filename in lexicographic
98 order, regardless of which of the directories they reside in. If
99 multiple files specify the same path, the entry in the file with
100 the lexicographically earliest name will be applied. All other
101 conflicting entries will be logged as errors. When two lines are
102 prefix and suffix of each other, then the prefix is always
6d785b6d
LP
103 processed first, the suffix later. Lines that take globs are
104 applied after those accepting no globs. If multiple operations
b938cb90
JE
105 shall be applied on the same file, (such as ACL, xattr, file
106 attribute adjustments), these are always done in the same fixed
6d785b6d
LP
107 order. Otherwise, the files/directories are processed in the order
108 they are listed.</para>
302fbdf2
ZJS
109
110 <para>If the administrator wants to disable a configuration file
111 supplied by the vendor, the recommended way is to place a symlink
112 to <filename>/dev/null</filename> in
113 <filename>/etc/tmpfiles.d/</filename> bearing the same filename.
114 </para>
115
116 <para>The configuration format is one line per path containing
117 type, path, mode, ownership, age, and argument fields:</para>
118
119 <programlisting>#Type Path Mode UID GID Age Argument
ed7fd549
ZJS
120d /run/user 0755 root root 10d -
121L /tmp/foobar - - - - /dev/null</programlisting>
302fbdf2 122
657cf7f4 123 <para>Fields may be enclosed within quotes and contain C-style escapes.</para>
124
302fbdf2
ZJS
125 <refsect2>
126 <title>Type</title>
127
128 <para>The type consists of a single letter and optionally an
129 exclamation mark.</para>
130
131 <para>The following line types are understood:</para>
132
133 <variablelist>
134 <varlistentry>
135 <term><varname>f</varname></term>
136 <listitem><para>Create a file if it does not exist yet. If
137 the argument parameter is given, it will be written to the
6a9171d2 138 file. Does not follow symlinks.</para></listitem>
302fbdf2
ZJS
139 </varlistentry>
140
141 <varlistentry>
142 <term><varname>F</varname></term>
143 <listitem><para>Create or truncate a file. If the argument
6a9171d2 144 parameter is given, it will be written to the file. Does not follow symlinks.</para>
302fbdf2
ZJS
145 </listitem>
146 </varlistentry>
147
148 <varlistentry>
149 <term><varname>w</varname></term>
150 <listitem><para>Write the argument parameter to a file, if
151 the file exists. Lines of this type accept shell-style
152 globs in place of normal path names. The argument parameter
153 will be written without a trailing newline. C-style
6a9171d2
LP
154 backslash escapes are interpreted. Follows
155 symlinks.</para></listitem>
302fbdf2
ZJS
156 </varlistentry>
157
158 <varlistentry>
159 <term><varname>d</varname></term>
4b743d67
ZJS
160 <listitem><para>Create a directory. The mode and ownership will be adjusted if
161 specified and the directory already exists. Contents of this directory are subject
ed7fd549 162 to time based cleanup if the age argument is specified.</para></listitem>
302fbdf2
ZJS
163 </varlistentry>
164
165 <varlistentry>
166 <term><varname>D</varname></term>
4b743d67
ZJS
167 <listitem><para>Similar to <varname>d</varname>, but in addition the contents
168 of the directory will be removed when <option>--remove</option> is used.
169 </para></listitem>
170 </varlistentry>
df8dee85
ZJS
171
172 <varlistentry>
173 <term><varname>e</varname></term>
ed7fd549
ZJS
174 <listitem><para>Similar to <varname>d</varname>, but the directory will not be created if
175 it does not exist. Lines of this type accept shell-style globs in place of normal path
176 names. For this entry to be useful, at least one of the mode, uid, gid, or age arguments
177 must be specified, since otherwise this entry has no effect. If the age argument is
178 <literal>0</literal>, contents of the directory will be unconditionally deleted every time
179 <command>systemd-tmpfiles --clean</command> is run. This can be useful when combined with
180 <varname>!</varname>, see the examples.</para></listitem>
302fbdf2
ZJS
181 </varlistentry>
182
183 <varlistentry>
184 <term><varname>v</varname></term>
185 <listitem><para>Create a subvolume if the path does not
2904e949
LP
186 exist yet, the file system supports subvolumes (btrfs), and
187 the system itself is installed into a subvolume
188 (specifically: the root directory <filename>/</filename> is
189 itself a subvolume). Otherwise, create a normal directory, in
190 the same way as <varname>d</varname>. A subvolume created
191 with this line type is not assigned to any higher-level
192 quota group. For that, use <varname>q</varname> or
193 <varname>Q</varname>, which allow creating simple quota
194 group hierarchies, see below.</para></listitem>
5fb13eb5
LP
195 </varlistentry>
196
197 <varlistentry>
198 <term><varname>q</varname></term>
b938cb90 199 <listitem><para>Similar to <varname>v</varname>. However,
5fb13eb5
LP
200 makes sure that the subvolume will be assigned to the same
201 higher-level quota groups as the subvolume it has been
202 created in. This ensures that higher-level limits and
203 accounting applied to the parent subvolume also include the
204 specified subvolume. On non-btrfs file systems, this line
205 type is identical to <varname>d</varname>. If the subvolume
206 already exists and is already assigned to one or more higher
b938cb90 207 level quota groups, no change to the quota hierarchy is
5fb13eb5
LP
208 made. Also see <varname>Q</varname> below. See <citerefentry
209 project='die-net'><refentrytitle>btrfs-qgroup</refentrytitle><manvolnum>8</manvolnum></citerefentry>
210 for details about the btrfs quota group
211 concept.</para></listitem>
212 </varlistentry>
213
214 <varlistentry>
215 <term><varname>Q</varname></term>
b938cb90 216 <listitem><para>Similar to <varname>q</varname>. However,
5fb13eb5
LP
217 instead of copying the higher-level quota group assignments
218 from the parent as-is, the lowest quota group of the parent
219 subvolume is determined that is not the leaf quota
220 group. Then, an "intermediary" quota group is inserted that
221 is one level below this level, and shares the same ID part
222 as the specified subvolume. If no higher-level quota group
223 exists for the parent subvolume, a new quota group at level
224 255 sharing the same ID as the specified subvolume is
225 inserted instead. This new intermediary quota group is then
226 assigned to the parent subvolume's higher-level quota
227 groups, and the specified subvolume's leaf quota group is
228 assigned to it.</para>
229
230 <para>Effectively, this has a similar effect as
231 <varname>q</varname>, however introduces a new higher-level
232 quota group for the specified subvolume that may be used to
233 enforce limits and accounting to the specified subvolume and
234 children subvolume created within it. Thus, by creating
235 subvolumes only via <varname>q</varname> and
b938cb90 236 <varname>Q</varname>, a concept of "subtree quotas" is
5fb13eb5
LP
237 implemented. Each subvolume for which <varname>Q</varname>
238 is set will get a "subtree" quota group created, and all
239 child subvolumes created within it will be assigned to
240 it. Each subvolume for which <varname>q</varname> is set
241 will not get such a "subtree" quota group, but it is ensured
242 that they are added to the same "subtree" quota group as their
243 immediate parents.</para>
244
245 <para>It is recommended to use
246 <varname>Q</varname> for subvolumes that typically contain
247 further subvolumes, and where it is desirable to have
248 accounting and quota limits on all child subvolumes
249 together. Examples for <varname>Q</varname> are typically
250 <filename>/home</filename> or
251 <filename>/var/lib/machines</filename>. In contrast,
252 <varname>q</varname> should be used for subvolumes that
253 either usually do not include further subvolumes or where no
254 accounting and quota limits are needed that apply to all
255 child subvolumes together. Examples for <varname>q</varname>
256 are typically <filename>/var</filename> or
257 <filename>/var/tmp</filename>. As with <varname>Q</varname>,
258 <varname>q</varname> has no effect on the quota group
259 hierarchy if the subvolume exists and already has at least
260 one higher-level quota group assigned.</para></listitem>
302fbdf2
ZJS
261 </varlistentry>
262
263 <varlistentry>
264 <term><varname>p</varname></term>
265 <term><varname>p+</varname></term>
266 <listitem><para>Create a named pipe (FIFO) if it does not
267 exist yet. If suffixed with <varname>+</varname> and a file
268 already exists where the pipe is to be created, it will be
269 removed and be replaced by the pipe.</para></listitem>
270 </varlistentry>
271
272 <varlistentry>
273 <term><varname>L</varname></term>
274 <term><varname>L+</varname></term>
275 <listitem><para>Create a symlink if it does not exist
276 yet. If suffixed with <varname>+</varname> and a file
277 already exists where the symlink is to be created, it will
278 be removed and be replaced by the symlink. If the argument
279 is omitted, symlinks to files with the same name residing in
280 the directory <filename>/usr/share/factory/</filename> are
b908bb63
JS
281 created. Note that permissions and ownership on symlinks
282 are ignored.</para></listitem>
302fbdf2
ZJS
283 </varlistentry>
284
285 <varlistentry>
286 <term><varname>c</varname></term>
287 <term><varname>c+</varname></term>
288 <listitem><para>Create a character device node if it does
289 not exist yet. If suffixed with <varname>+</varname> and a
290 file already exists where the device node is to be created,
291 it will be removed and be replaced by the device node. It is
292 recommended to suffix this entry with an exclamation mark to
293 only create static device nodes at boot, as udev will not
294 manage static device nodes that are created at runtime.
295 </para></listitem>
296 </varlistentry>
297
298 <varlistentry>
299 <term><varname>b</varname></term>
300 <term><varname>b+</varname></term>
301 <listitem><para>Create a block device node if it does not
302 exist yet. If suffixed with <varname>+</varname> and a file
303 already exists where the device node is to be created, it
304 will be removed and be replaced by the device node. It is
305 recommended to suffix this entry with an exclamation mark to
306 only create static device nodes at boot, as udev will not
307 manage static device nodes that are created at runtime.
308 </para></listitem>
309 </varlistentry>
310
311 <varlistentry>
312 <term><varname>C</varname></term>
313 <listitem><para>Recursively copy a file or directory, if the
314 destination files or directories do not exist yet. Note that
315 this command will not descend into subdirectories if the
316 destination directory already exists. Instead, the entire
317 copy operation is skipped. If the argument is omitted, files
318 from the source directory
319 <filename>/usr/share/factory/</filename> with the same name
6a9171d2 320 are copied. Does not follow symlinks.</para></listitem>
302fbdf2
ZJS
321 </varlistentry>
322
323 <varlistentry>
324 <term><varname>x</varname></term>
325 <listitem><para>Ignore a path during cleaning. Use this type
326 to exclude paths from clean-up as controlled with the Age
327 parameter. Note that lines of this type do not influence the
328 effect of <varname>r</varname> or <varname>R</varname>
50d9e46d 329 lines. Lines of this type accept shell-style globs in place
302fbdf2
ZJS
330 of normal path names. </para></listitem>
331 </varlistentry>
332
333 <varlistentry>
334 <term><varname>X</varname></term>
335 <listitem><para>Ignore a path during cleaning. Use this type
336 to exclude paths from clean-up as controlled with the Age
337 parameter. Unlike <varname>x</varname>, this parameter will
338 not exclude the content if path is a directory, but only
339 directory itself. Note that lines of this type do not
340 influence the effect of <varname>r</varname> or
50d9e46d 341 <varname>R</varname> lines. Lines of this type accept
302fbdf2
ZJS
342 shell-style globs in place of normal path names.
343 </para></listitem>
344 </varlistentry>
345
346 <varlistentry>
347 <term><varname>r</varname></term>
348 <listitem><para>Remove a file or directory if it exists.
349 This may not be used to remove non-empty directories, use
350 <varname>R</varname> for that. Lines of this type accept
351 shell-style globs in place of normal path
6a9171d2 352 names. Does not follow symlinks.</para></listitem>
302fbdf2
ZJS
353 </varlistentry>
354
355 <varlistentry>
356 <term><varname>R</varname></term>
357 <listitem><para>Recursively remove a path and all its
358 subdirectories (if it is a directory). Lines of this type
359 accept shell-style globs in place of normal path
6a9171d2 360 names. Does not follow symlinks.</para></listitem>
302fbdf2
ZJS
361 </varlistentry>
362
363 <varlistentry>
364 <term><varname>z</varname></term>
365 <listitem><para>Adjust the access mode, group and user, and
366 restore the SELinux security context of a file or directory,
367 if it exists. Lines of this type accept shell-style globs in
6a9171d2 368 place of normal path names. Does not follow symlinks.</para></listitem>
302fbdf2
ZJS
369 </varlistentry>
370
371 <varlistentry>
372 <term><varname>Z</varname></term>
373 <listitem><para>Recursively set the access mode, group and
374 user, and restore the SELinux security context of a file or
375 directory if it exists, as well as of its subdirectories and
376 the files contained therein (if applicable). Lines of this
6a9171d2
LP
377 type accept shell-style globs in place of normal path
378 names. Does not follow symlinks. </para></listitem>
302fbdf2
ZJS
379 </varlistentry>
380
381 <varlistentry>
382 <term><varname>t</varname></term>
b705ab6a
ZJS
383 <listitem><para>Set extended attributes. Lines of this type
384 accept shell-style globs in place of normal path names.
6a9171d2
LP
385 This can be useful for setting SMACK labels. Does not follow
386 symlinks.</para></listitem>
b705ab6a
ZJS
387 </varlistentry>
388
389 <varlistentry>
390 <term><varname>T</varname></term>
391 <listitem><para>Recursively set extended attributes. Lines
392 of this type accept shell-style globs in place of normal
6a9171d2
LP
393 path names. This can be useful for setting SMACK
394 labels. Does not follow symlinks. </para></listitem>
302fbdf2 395 </varlistentry>
f8eeeaf9 396
fa3f5fd2
GB
397 <varlistentry>
398 <term><varname>h</varname></term>
399 <listitem><para>Set file/directory attributes. Lines of this type
400 accept shell-style globs in place of normal path names.</para>
401
1ae705fb
LP
402 <para>The format of the argument field is
403 <varname>[+-=][aAcCdDeijsStTu] </varname>. The prefix
404 <varname>+</varname> (the default one) causes the
fa3f5fd2 405 attribute(s) to be added; <varname>-</varname> causes the
1ae705fb 406 attribute(s) to be removed; <varname>=</varname> causes the
a8eaaee7 407 attributes to be set exactly as the following letters. The
1ae705fb 408 letters <literal>aAcCdDeijsStTu</literal> select the new
fa3f5fd2 409 attributes for the files, see
c30c611c 410 <citerefentry project='man-pages'><refentrytitle>chattr</refentrytitle>
fa3f5fd2
GB
411 <manvolnum>1</manvolnum></citerefentry> for further information.
412 </para>
1ae705fb
LP
413 <para>Passing only <varname>=</varname> as argument resets
414 all the file attributes listed above. It has to be pointed
b938cb90 415 out that the <varname>=</varname> prefix limits itself to
1ae705fb
LP
416 the attributes corresponding to the letters listed here. All
417 other attributes will be left untouched. Does not follow
418 symlinks.</para>
fa3f5fd2
GB
419 </listitem>
420 </varlistentry>
421
422 <varlistentry>
423 <term><varname>H</varname></term>
424 <listitem><para>Recursively set file/directory attributes. Lines
425 of this type accept shell-style globs in place of normal
6a9171d2 426 path names. Does not follow symlinks.
fa3f5fd2
GB
427 </para></listitem>
428 </varlistentry>
429
f8eeeaf9
ZJS
430 <varlistentry>
431 <term><varname>a</varname></term>
50d9e46d
ZJS
432 <term><varname>a+</varname></term>
433 <listitem><para>Set POSIX ACLs (access control lists). If
a8eaaee7 434 suffixed with <varname>+</varname>, the specified entries will
dd4105b0
ZJS
435 be added to the existing set.
436 <command>systemd-tmpfiles</command> will automatically add
437 the required base entries for user and group based on the
438 access mode of the file, unless base entries already exist
7f3fdb7f 439 or are explicitly specified. The mask will be added if not
dd4105b0
ZJS
440 specified explicitly or already present. Lines of this type
441 accept shell-style globs in place of normal path names. This
442 can be useful for allowing additional access to certain
6a9171d2 443 files. Does not follow symlinks.</para></listitem>
b705ab6a
ZJS
444 </varlistentry>
445
446 <varlistentry>
447 <term><varname>A</varname></term>
50d9e46d
ZJS
448 <term><varname>A+</varname></term>
449 <listitem><para>Same as <varname>a</varname> and
6a9171d2
LP
450 <varname>a+</varname>, but recursive. Does not follow
451 symlinks.</para></listitem>
f8eeeaf9 452 </varlistentry>
302fbdf2
ZJS
453 </variablelist>
454
455 <para>If the exclamation mark is used, this line is only safe of
456 execute during boot, and can break a running system. Lines
457 without the exclamation mark are presumed to be safe to execute
458 at any time, e.g. on package upgrades.
459 <command>systemd-tmpfiles</command> will execute line with an
460 exclamation mark only if option <option>--boot</option> is
461 given.</para>
462
463 <para>For example:
464 <programlisting># Make sure these are created by default so that nobody else can
465 d /tmp/.X11-unix 1777 root root 10d
466
467 # Unlink the X11 lock files
468 r! /tmp/.X[0-9]*-lock</programlisting>
469 The second line in contrast to the first one would break a
470 running system, and will only be executed with
471 <option>--boot</option>.</para>
472 </refsect2>
473
474 <refsect2>
475 <title>Path</title>
476
477 <para>The file system path specification supports simple
478 specifier expansion. The following expansions are
479 understood:</para>
480
481 <table>
482 <title>Specifiers available</title>
483 <tgroup cols='3' align='left' colsep='1' rowsep='1'>
484 <colspec colname="spec" />
485 <colspec colname="mean" />
486 <colspec colname="detail" />
487 <thead>
488 <row>
489 <entry>Specifier</entry>
490 <entry>Meaning</entry>
491 <entry>Details</entry>
492 </row>
493 </thead>
494 <tbody>
495 <row>
496 <entry><literal>%m</literal></entry>
497 <entry>Machine ID</entry>
498 <entry>The machine ID of the running system, formatted as string. See <citerefentry><refentrytitle>machine-id</refentrytitle><manvolnum>5</manvolnum></citerefentry> for more information.</entry>
499 </row>
500 <row>
501 <entry><literal>%b</literal></entry>
502 <entry>Boot ID</entry>
503 <entry>The boot ID of the running system, formatted as string. See <citerefentry><refentrytitle>random</refentrytitle><manvolnum>4</manvolnum></citerefentry> for more information.</entry>
504 </row>
505 <row>
506 <entry><literal>%H</literal></entry>
507 <entry>Host name</entry>
508 <entry>The hostname of the running system.</entry>
509 </row>
510 <row>
511 <entry><literal>%v</literal></entry>
512 <entry>Kernel release</entry>
513 <entry>Identical to <command>uname -r</command> output.</entry>
514 </row>
515 <row>
516 <entry><literal>%%</literal></entry>
517 <entry>Escaped %</entry>
518 <entry>Single percent sign.</entry>
519 </row>
520 </tbody>
521 </tgroup>
522 </table>
523 </refsect2>
524
525 <refsect2>
526 <title>Mode</title>
527
528 <para>The file access mode to use when creating this file or
529 directory. If omitted or when set to <literal>-</literal>, the
530 default is used: 0755 for directories, 0644 for all other file
531 objects. For <varname>z</varname>, <varname>Z</varname> lines,
532 if omitted or when set to <literal>-</literal>, the file access
533 mode will not be modified. This parameter is ignored for
534 <varname>x</varname>, <varname>r</varname>,
f8eeeaf9
ZJS
535 <varname>R</varname>, <varname>L</varname>, <varname>t</varname>,
536 and <varname>a</varname> lines.</para>
302fbdf2
ZJS
537
538 <para>Optionally, if prefixed with <literal>~</literal>, the
539 access mode is masked based on the already set access bits for
540 existing file or directories: if the existing file has all
541 executable bits unset, all executable bits are removed from the
542 new access mode, too. Similarly, if all read bits are removed
543 from the old access mode, they will be removed from the new
544 access mode too, and if all write bits are removed, they will be
545 removed from the new access mode too. In addition, the
546 sticky/SUID/SGID bit is removed unless applied to a
547 directory. This functionality is particularly useful in
548 conjunction with <varname>Z</varname>.</para>
549 </refsect2>
550
551 <refsect2>
552 <title>UID, GID</title>
553
554 <para>The user and group to use for this file or directory. This
555 may either be a numeric user/group ID or a user or group
556 name. If omitted or when set to <literal>-</literal>, the
a8eaaee7 557 default 0 (root) is used. For <varname>z</varname> and
f8eeeaf9
ZJS
558 <varname>Z</varname> lines, when omitted or when set to
559 <literal>-</literal>, the file ownership will not be
560 modified. These parameters are ignored for <varname>x</varname>,
561 <varname>r</varname>, <varname>R</varname>,
562 <varname>L</varname>, <varname>t</varname>, and
563 <varname>a</varname> lines.</para>
302fbdf2
ZJS
564 </refsect2>
565
566 <refsect2>
567 <title>Age</title>
568 <para>The date field, when set, is used to decide what files to
569 delete when cleaning. If a file or directory is older than the
570 current time minus the age field, it is deleted. The field
571 format is a series of integers each followed by one of the
a8eaaee7 572 following suffixes for the respective time units:
00c53f42
ZJS
573 <constant>s</constant>,
574 <constant>m</constant> or <constant>min</constant>,
575 <constant>h</constant>,
576 <constant>d</constant>,
577 <constant>w</constant>,
a8eaaee7 578 <constant>ms</constant>, and
00c53f42 579 <constant>us</constant>,
a8eaaee7
JE
580 meaning seconds, minutes, hours, days, weeks,
581 milliseconds, and microseconds, respectively. Full names of the time units can
00c53f42
ZJS
582 be used too.
583 </para>
302fbdf2
ZJS
584
585 <para>If multiple integers and units are specified, the time
00c53f42
ZJS
586 values are summed. If an integer is given without a unit,
587 <constant>s</constant> is assumed.
302fbdf2
ZJS
588 </para>
589
590 <para>When the age is set to zero, the files are cleaned
591 unconditionally.</para>
592
5fb13eb5 593 <para>The age field only applies to lines starting with
df8dee85 594 <varname>d</varname>, <varname>D</varname>, <varname>e</varname>,
5fb13eb5
LP
595 <varname>v</varname>, <varname>q</varname>,
596 <varname>Q</varname>, <varname>C</varname>, <varname>x</varname>
597 and <varname>X</varname>. If omitted or set to
598 <literal>-</literal>, no automatic clean-up is done.</para>
302fbdf2
ZJS
599
600 <para>If the age field starts with a tilde character
601 <literal>~</literal>, the clean-up is only applied to files and
602 directories one level inside the directory specified, but not
603 the files and directories immediately inside it.</para>
604 </refsect2>
605
606 <refsect2>
607 <title>Argument</title>
608
609 <para>For <varname>L</varname> lines determines the destination
a8eaaee7
JE
610 path of the symlink. For <varname>c</varname> and
611 <varname>b</varname>, determines the major/minor of the device
302fbdf2
ZJS
612 node, with major and minor formatted as integers, separated by
613 <literal>:</literal>, e.g. <literal>1:3</literal>. For
614 <varname>f</varname>, <varname>F</varname>, and
a8eaaee7 615 <varname>w</varname>, the argument may be used to specify a short string that
302fbdf2
ZJS
616 is written to the file, suffixed by a newline. For
617 <varname>C</varname>, specifies the source file or
a8eaaee7 618 directory. For <varname>t</varname> and <varname>T</varname>,
0ac0b1e7 619 determines extended attributes to be set. For
a8eaaee7
JE
620 <varname>a</varname> and <varname>A</varname>, determines ACL
621 attributes to be set. For <varname>h</varname> and
b938cb90 622 <varname>H</varname>, determines the file attributes to
0ac0b1e7 623 set. Ignored for all other lines.</para>
302fbdf2
ZJS
624 </refsect2>
625
626 </refsect1>
627
628 <refsect1>
4b743d67 629 <title>Examples</title>
302fbdf2 630 <example>
4b743d67
ZJS
631 <title>Create directories with specific mode and ownership</title>
632 <para>
0a07667d 633 <citerefentry project='die-net'><refentrytitle>screen</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
4b743d67
ZJS
634 needs two directories created at boot with specific modes and ownership:</para>
635
636 <programlisting># /usr/lib/tmpfiles.d/screen.conf
637d /run/screens 1777 root screen 10d
638d /run/uscreens 0755 root screen 10d12h
639</programlisting>
640
641 <para>Contents of <filename>/run/screens</filename> and /run/uscreens will
642 cleaned up after 10 and 10½ days, respectively.</para>
643 </example>
302fbdf2 644
4b743d67
ZJS
645 <example>
646 <title>Create a directory with a SMACK attribute</title>
647 <programlisting>D /run/cups - - - -
648t /run/cups - - - - security.SMACK64=printing user.attr-with-spaces="foo bar"
649 </programlisting>
650
b17649ee 651 <para>The directory will be owned by root and have default mode. Its contents are
4b743d67
ZJS
652 not subject to time based cleanup, but will be obliterated when
653 <command>systemd-tmpfiles --remove</command> runs.</para>
302fbdf2 654 </example>
4b743d67 655
302fbdf2 656 <example>
4b743d67
ZJS
657 <title>Create a directory and prevent its contents from cleanup</title>
658 <para>
0a07667d 659 <citerefentry project='die-net'><refentrytitle>abrt</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
4b743d67
ZJS
660 needs a directory created at boot with specific mode and ownership and its content
661 should be preserved from the automatic cleanup applied to the contents of
662 <filename>/var/tmp</filename>:</para>
663
664 <programlisting># /usr/lib/tmpfiles.d/tmp.conf
665d /var/tmp 1777 root root 30d
666</programlisting>
667
668 <programlisting># /usr/lib/tmpfiles.d/abrt.conf
669d /var/tmp/abrt 0755 abrt abrt -
df8dee85
ZJS
670</programlisting>
671 </example>
672
673 <example>
674 <title>Apply clean up during boot and based on time</title>
675
676 <programlisting># /usr/lib/tmpfiles.d/dnf.conf
677r! /var/cache/dnf/*/*/download_lock.pid
678r! /var/cache/dnf/*/*/metadata_lock.pid
679r! /var/lib/dnf/rpmdb_lock.pid
680e /var/chache/dnf/ - - - 30d
4b743d67 681</programlisting>
302fbdf2 682
df8dee85
ZJS
683 <para>The lock files will be removed during boot. Any files and directories in
684 <filename>/var/chache/dnf/</filename> will be removed after they have not been
685 accessed in 30 days.</para>
302fbdf2 686 </example>
ed7fd549
ZJS
687
688 <example>
689 <title>Empty the contents of the a cache directory on boot</title>
690
691 <programlisting># /usr/lib/tmpfiles.d/krb5rcache.conf
692e! /var/cache/krb5rcache - - - 0
693</programlisting>
694
695 <para>Any files and subdirectories in <filename>/var/cache/krb5rcache/</filename>
696 will be removed on boot. The directory will not be created.
697 </para>
698 </example>
302fbdf2
ZJS
699 </refsect1>
700
701 <refsect1>
702 <title>See Also</title>
703 <para>
704 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
705 <citerefentry><refentrytitle>systemd-tmpfiles</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
706 <citerefentry><refentrytitle>systemd-delta</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
f8eeeaf9
ZJS
707 <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
708 <citerefentry project='man-pages'><refentrytitle>attr</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
709 <citerefentry project='man-pages'><refentrytitle>getfattr</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
710 <citerefentry project='man-pages'><refentrytitle>setfattr</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
711 <citerefentry project='man-pages'><refentrytitle>setfacl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
fa3f5fd2 712 <citerefentry project='man-pages'><refentrytitle>getfacl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
5fb13eb5
LP
713 <citerefentry project='man-pages'><refentrytitle>chattr</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
714 <citerefentry project='die-net'><refentrytitle>btrfs-subvolume</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
715 <citerefentry project='die-net'><refentrytitle>btrfs-qgroup</refentrytitle><manvolnum>8</manvolnum></citerefentry>
302fbdf2
ZJS
716 </para>
717 </refsect1>
4149f86d
BP
718
719</refentry>