2010-11-04 23:31:07 +03:00
<?xml version="1.0"?>
<!-- * - nxml - * -->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!--
This file is part of systemd.
Copyright 2010 Brandon Philips
systemd is free software; you can redistribute it and/or modify it
2012-04-12 02:20:58 +04:00
under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
2010-11-04 23:31:07 +03:00
(at your option) any later version.
systemd is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2012-04-12 02:20:58 +04:00
Lesser General Public License for more details.
2010-11-04 23:31:07 +03:00
2012-04-12 02:20:58 +04:00
You should have received a copy of the GNU Lesser General Public License
2010-11-04 23:31:07 +03:00
along with systemd; If not, see <http: / / w w w . g n u . o r g / l i c e n s e s /> .
-->
<refentry id= "tmpfiles.d" >
<refentryinfo >
<title > tmpfiles.d</title>
<productname > systemd</productname>
<authorgroup >
<author >
<contrib > Documentation</contrib>
<firstname > Brandon</firstname>
<surname > Philips</surname>
<email > brandon@ifup.org</email>
</author>
</authorgroup>
</refentryinfo>
<refmeta >
<refentrytitle > tmpfiles.d</refentrytitle>
<manvolnum > 5</manvolnum>
</refmeta>
<refnamediv >
<refname > tmpfiles.d</refname>
2011-02-13 17:08:15 +03:00
<refpurpose > Configuration for creation, deletion and
cleaning of volatile and temporary files</refpurpose>
2010-11-04 23:31:07 +03:00
</refnamediv>
2010-11-21 22:41:00 +03:00
<refsynopsisdiv >
<para > <filename > /etc/tmpfiles.d/*.conf</filename> </para>
2011-04-25 23:38:21 +04:00
<para > <filename > /run/tmpfiles.d/*.conf</filename> </para>
2012-03-14 17:25:05 +04:00
<para > <filename > /usr/lib/tmpfiles.d/*.conf</filename> </para>
2010-11-21 22:41:00 +03:00
</refsynopsisdiv>
2010-11-04 23:31:07 +03:00
<refsect1 >
<title > Description</title>
2012-06-10 20:32:11 +04:00
<para > <command > systemd-tmpfiles</command> uses the
configuration files from the above directories to describe the
creation, cleaning and removal of volatile and
temporary files and directories which usually reside
in directories such as <filename > /run</filename>
or <filename > /tmp</filename> .</para>
2010-11-04 23:31:07 +03:00
</refsect1>
<refsect1 >
2012-06-10 20:32:11 +04:00
<title > Configuration Format</title>
2010-11-04 23:31:07 +03:00
2012-06-10 20:26:11 +04:00
<para > Each configuration file shall be named in the
2013-09-17 20:02:02 +04:00
style of <filename > < package> .conf</filename> .
2012-06-10 20:26:11 +04:00
Files in <filename > /etc/</filename> override files
with the same name in <filename > /usr/lib/</filename>
and <filename > /run/</filename> . Files in
<filename > /run/</filename> override files with the same
name in <filename > /usr/lib/</filename> . Packages
should install their configuration files in
<filename > /usr/lib/</filename> . Files in
2012-01-17 18:04:12 +04:00
<filename > /etc/</filename> are reserved for the local
2012-06-10 20:26:11 +04:00
administrator, who may use this logic to override the
configuration files installed by vendor packages. All
2012-01-17 18:04:12 +04:00
configuration files are sorted by their filename in
2013-09-12 23:12:49 +04:00
lexicographic order, regardless in which of the
2013-09-12 06:00:24 +04:00
directories they reside. If multiple files specify the
2013-09-12 23:12:49 +04:00
same path, the entry in the file with the lexicographically
2013-09-12 06:00:24 +04:00
earliest name will be applied, all all other conflicting
entries logged as errors.</para>
2012-06-10 20:26:11 +04:00
<para > If the administrator wants to disable a
2013-09-12 23:12:49 +04:00
configuration file supplied by the vendor, the
2012-06-10 20:26:11 +04:00
recommended way is to place a symlink to
<filename > /dev/null</filename> in
<filename > /etc/tmpfiles.d/</filename> bearing the
2013-06-27 23:51:44 +04:00
same filename.</para>
2011-04-25 23:38:21 +04:00
2012-06-10 20:32:11 +04:00
<para > The configuration format is one line per path
containing action, path, mode, ownership, age and argument
fields:</para>
2010-11-11 01:01:20 +03:00
2012-01-17 18:04:12 +04:00
<programlisting > Type Path Mode UID GID Age Argument
d /run/user 0755 root root 10d -
L /tmp/foobar - - - - /dev/null</programlisting>
2010-11-11 01:01:20 +03:00
2013-09-17 20:02:02 +04:00
2010-11-11 01:01:20 +03:00
<refsect2 >
2010-11-19 18:14:52 +03:00
<title > Type</title>
2013-09-17 20:02:02 +04:00
<para > The following line types are understood:</para>
2010-11-11 01:01:20 +03:00
<variablelist >
<varlistentry >
<term > <varname > f</varname> </term>
2013-08-25 11:01:45 +04:00
<listitem > <para > Create a file if it does not exist yet (optionally writing a short string into it, if the argument parameter is passed)</para> </listitem>
2010-11-11 01:01:20 +03:00
</varlistentry>
<varlistentry >
<term > <varname > F</varname> </term>
2012-01-18 19:39:04 +04:00
<listitem > <para > Create or truncate a file (optionally writing a short string into it, if the argument parameter is passed)</para> </listitem>
</varlistentry>
<varlistentry >
<term > <varname > w</varname> </term>
2012-09-15 20:58:49 +04:00
<listitem > <para > Write the argument parameter to a file, if the file exists.
Lines of this type accept shell-style globs in place of normal path
names. The argument parameter will be written without a trailing
newline. C-style backslash escapes are interpreted.</para> </listitem>
2010-11-11 01:01:20 +03:00
</varlistentry>
<varlistentry >
<term > <varname > d</varname> </term>
2013-08-25 11:01:45 +04:00
<listitem > <para > Create a directory if it does not exist yet</para> </listitem>
2010-11-11 01:01:20 +03:00
</varlistentry>
<varlistentry >
<term > <varname > D</varname> </term>
2010-11-21 22:41:00 +03:00
<listitem > <para > Create or empty a directory</para> </listitem>
2010-11-11 01:01:20 +03:00
</varlistentry>
2011-07-12 05:56:56 +04:00
<varlistentry >
<term > <varname > p</varname> </term>
2013-08-25 11:01:45 +04:00
<listitem > <para > Create a named pipe (FIFO) if it does not exist yet</para> </listitem>
2011-07-12 05:56:56 +04:00
</varlistentry>
2012-01-17 18:04:12 +04:00
<varlistentry >
<term > <varname > L</varname> </term>
2013-08-25 11:01:45 +04:00
<listitem > <para > Create a symlink if it does not exist yet</para> </listitem>
2012-01-17 18:04:12 +04:00
</varlistentry>
<varlistentry >
<term > <varname > c</varname> </term>
2013-08-25 11:01:45 +04:00
<listitem > <para > Create a character device node if it does not exist yet</para> </listitem>
2012-01-17 18:04:12 +04:00
</varlistentry>
<varlistentry >
<term > <varname > b</varname> </term>
2013-08-25 11:01:45 +04:00
<listitem > <para > Create a block device node if it does not exist yet</para> </listitem>
2012-01-17 18:04:12 +04:00
</varlistentry>
2013-09-18 01:33:30 +04:00
<varlistentry >
<term > <varname > m</varname> </term>
<listitem > <para > If the
2013-10-15 10:58:51 +04:00
specified file path exists,
2013-09-18 01:33:30 +04:00
adjust its access mode, group
and user to the specified
values and reset the SELinux
2013-10-15 10:58:51 +04:00
label. If it does not exist, do
2013-09-18 01:33:30 +04:00
nothing.</para> </listitem>
</varlistentry>
2010-11-11 01:01:20 +03:00
<varlistentry >
<term > <varname > x</varname> </term>
2011-02-12 11:31:25 +03:00
<listitem > <para > Ignore a path
during cleaning. Use this type
to exclude paths from clean-up
as controlled with the Age
parameter. Note that lines of
this type do not influence the
effect of r or R lines. Lines
of this type accept
shell-style globs in place of
2012-10-26 02:16:47 +04:00
normal path
2011-02-12 11:31:25 +03:00
names.</para> </listitem>
2010-11-11 01:01:20 +03:00
</varlistentry>
2013-01-18 19:13:08 +04:00
<varlistentry >
<term > <varname > X</varname> </term>
<listitem > <para > Ignore a path
2013-10-03 17:47:26 +04:00
during cleaning. Use this type
to exclude paths from clean-up
as controlled with the Age
2013-10-15 10:58:51 +04:00
parameter. Unlike x, this
2013-10-03 17:47:26 +04:00
parameter will not exclude the
content if path is a directory,
but only directory itself.
Note that lines of this type do
not influence the effect of r
or R lines. Lines of this type
accept shell-style globs in
place of normal path
2013-01-18 19:13:08 +04:00
names.</para> </listitem>
</varlistentry>
2010-11-11 01:01:20 +03:00
<varlistentry >
<term > <varname > r</varname> </term>
2011-02-12 11:31:25 +03:00
<listitem > <para > Remove a file
or directory if it
exists. This may not be used
to remove non-empty
directories, use R for
that. Lines of this type
accept shell-style globs in
place of normal path
names.</para> </listitem>
2010-11-11 01:01:20 +03:00
</varlistentry>
<varlistentry >
<term > <varname > R</varname> </term>
2011-02-12 11:31:25 +03:00
<listitem > <para > Recursively
remove a path and all its
subdirectories (if it is a
directory). Lines of this type
accept shell-style globs in
place of normal path
names.</para> </listitem>
2010-11-11 01:01:20 +03:00
</varlistentry>
2011-12-16 02:04:37 +04:00
2011-12-16 21:27:35 +04:00
<varlistentry >
<term > <varname > z</varname> </term>
2012-03-13 00:51:39 +04:00
<listitem > <para > Restore
SELinux security context label
and set ownership and access
mode of a file or directory if
it exists. Lines of this type
accept shell-style globs in
place of normal path names.
2011-12-16 21:27:35 +04:00
</para> </listitem>
</varlistentry>
2011-12-16 02:04:37 +04:00
<varlistentry >
<term > <varname > Z</varname> </term>
2012-03-13 00:51:39 +04:00
<listitem > <para > Recursively
restore SELinux security
context label and set
ownership and access mode of a
path and all its
subdirectories (if it is a
directory). Lines of this type
accept shell-style globs in
place of normal path
names.</para> </listitem>
2011-12-16 02:04:37 +04:00
</varlistentry>
2010-11-11 01:01:20 +03:00
</variablelist>
</refsect2>
2013-09-17 20:02:02 +04:00
<refsect2 >
<title > Path</title>
<para > The file system path specification supports simple specifier
expansion. The following expansions are
understood:</para>
<table >
<title > Specifiers available</title>
<tgroup cols= '3' align= 'left' colsep= '1' rowsep= '1' >
<colspec colname= "spec" />
<colspec colname= "mean" />
<colspec colname= "detail" />
<thead >
<row >
<entry > Specifier</entry>
<entry > Meaning</entry>
<entry > Details</entry>
</row>
</thead>
<tbody >
<row >
<entry > <literal > %m</literal> </entry>
<entry > Machine ID</entry>
<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>
</row>
<row >
<entry > <literal > %b</literal> </entry>
<entry > Boot ID</entry>
<entry > The boot ID of the running system, formatted as string. See <citerefentry > <refentrytitle > random</refentrytitle> <manvolnum > 4</manvolnum> </citerefentry> for more information.</entry>
</row>
<row >
<entry > <literal > %H</literal> </entry>
<entry > Host name</entry>
<entry > The hostname of the running system.</entry>
</row>
<row >
<entry > <literal > %v</literal> </entry>
<entry > Kernel release</entry>
<entry > Identical to <command > uname -r</command> output.</entry>
</row>
<row >
<entry > <literal > %%</literal> </entry>
<entry > Escaped %</entry>
<entry > Single percent sign.</entry>
</row>
</tbody>
</tgroup>
</table>
</refsect2>
2010-11-11 01:01:20 +03:00
<refsect2 >
2010-11-19 18:14:52 +03:00
<title > Mode</title>
2011-02-12 11:31:25 +03:00
<para > The file access mode to use when
creating this file or directory. If omitted or
2013-09-12 23:12:49 +04:00
when set to -, the default is used: 0755 for
2012-01-17 18:04:12 +04:00
directories, 0644 for all other file
2013-09-12 23:12:49 +04:00
objects. For z, Z lines, if omitted or when set
to -, the file access mode will not be
2012-01-17 18:04:12 +04:00
modified. This parameter is ignored for x, r,
R, L lines.</para>
2010-11-19 18:14:52 +03:00
</refsect2>
<refsect2 >
<title > UID, GID</title>
<para > The user and group to use for this file
or directory. This may either be a numeric
user/group ID or a user or group name. If
2013-09-12 23:12:49 +04:00
omitted or when set to -, the default 0 (root)
is used. For z, Z lines, when omitted or when set to -,
2011-12-16 21:00:11 +04:00
the file ownership will not be modified.
2012-01-17 18:04:12 +04:00
These parameters are ignored for x, r, R, L lines.</para>
2010-11-19 18:14:52 +03:00
</refsect2>
<refsect2 >
<title > Age</title>
2010-11-11 01:01:20 +03:00
<para > The date field, when set, is used to
decide what files to delete when cleaning. If
a file or directory is older than the current
2013-09-12 23:12:49 +04:00
time minus the age field, it is deleted. The
2010-11-11 01:01:20 +03:00
field format is a series of integers each
followed by one of the following
postfixes for the respective time units:</para>
<variablelist >
<varlistentry >
<term > <varname > s</varname> </term>
<term > <varname > min</varname> </term>
<term > <varname > h</varname> </term>
<term > <varname > d</varname> </term>
<term > <varname > w</varname> </term>
<term > <varname > ms</varname> </term>
<term > <varname > m</varname> </term>
<term > <varname > us</varname> </term> </varlistentry>
</variablelist>
2010-11-04 23:31:07 +03:00
2013-09-12 23:12:49 +04:00
<para > If multiple integers and units are specified, the time
2012-10-24 00:15:05 +04:00
values are summed up. If an integer is given without a unit,
2012-09-03 17:07:32 +04:00
s is assumed.
</para>
<para > When the age is set to zero, the files are cleaned
unconditionally.</para>
2010-11-04 23:31:07 +03:00
2011-04-25 23:38:21 +04:00
<para > The age field only applies to lines starting with
2013-09-12 23:12:49 +04:00
d, D and x. If omitted or set to -, no automatic clean-up
2011-04-25 23:38:21 +04:00
is done.</para>
2012-06-20 11:05:50 +04:00
<para > If the age field starts with a tilde
2013-09-12 23:12:49 +04:00
character (~), the clean-up is only applied to
2012-06-20 11:05:50 +04:00
files and directories one level inside the
directory specified, but not the files and
directories immediately inside it.</para>
2010-11-11 01:01:20 +03:00
</refsect2>
2010-11-04 23:31:07 +03:00
2012-01-17 18:04:12 +04:00
<refsect2 >
<title > Argument</title>
<para > For L lines determines the destination
path of the symlink. For c, b determines the
major/minor of the device node, with major and
minor formatted as integers, separated by :,
2012-01-18 19:39:04 +04:00
e.g. "1:3". For f, F, w may be used to specify
a short string that is written to the file,
suffixed by a newline. Ignored for all other
lines.</para>
2012-01-17 18:04:12 +04:00
</refsect2>
2010-11-04 23:31:07 +03:00
</refsect1>
<refsect1 >
<title > Example</title>
<example >
<title > /etc/tmpfiles.d/screen.conf example</title>
<para > <command > screen</command> needs two directories created at boot with specific modes and ownership.</para>
2012-01-17 18:04:12 +04:00
<programlisting > d /var/run/screens 1777 root root 10d
2010-11-11 01:01:20 +03:00
d /var/run/uscreens 0755 root root 10d12h</programlisting>
2010-11-04 23:31:07 +03:00
</example>
2013-08-22 16:47:49 +04:00
<example >
<title > /etc/tmpfiles.d/abrt.conf example</title>
<para > <command > abrt</command> needs a directory created at boot with specific mode and ownership and its content should be preserved.</para>
<programlisting > d /var/tmp/abrt 0755 abrt abrt
x /var/tmp/abrt/*</programlisting>
</example>
2010-11-04 23:31:07 +03:00
</refsect1>
<refsect1 >
<title > See Also</title>
<para >
2011-02-13 17:08:15 +03:00
<citerefentry > <refentrytitle > systemd</refentrytitle> <manvolnum > 1</manvolnum> </citerefentry> ,
2012-06-27 18:30:57 +04:00
<citerefentry > <refentrytitle > systemd-tmpfiles</refentrytitle> <manvolnum > 8</manvolnum> </citerefentry> ,
<citerefentry > <refentrytitle > systemd-delta</refentrytitle> <manvolnum > 1</manvolnum> </citerefentry>
2010-11-04 23:31:07 +03:00
</para>
</refsect1>
</refentry>