filename in lexicographic order, regardless of which
of the directories they reside in. If multiple files
specify the same path, the entry in the file with the
- lexicographically earliest name will be applied, all
- all other conflicting entries logged as errors.</para>
+ lexicographically earliest name will be applied.
+ All other conflicting entries will be logged as
+ errors. When two lines are prefix and suffix of each
+ other, then the prefix is always processed first, the
+ suffix later. Otherwise, the files/directories are
+ processed in the order they are listed.</para>
<para>If the administrator wants to disable a
configuration file supplied by the vendor, the
<listitem><para>Create or empty a directory.</para></listitem>
</varlistentry>
+ <varlistentry>
+ <term><varname>v</varname></term>
+ <listitem><para>Create a
+ subvolume if the path does not
+ exist yet and the file system
+ supports this (btrfs). Otherwise
+ create a normal directory, in
+ the same way as
+ <varname>d</varname>.</para></listitem>
+ </varlistentry>
+
<varlistentry>
<term><varname>p</varname></term>
- <listitem><para>Create a named pipe (FIFO) if it does not exist yet.</para></listitem>
+ <term><varname>p+</varname></term>
+ <listitem><para>Create a named
+ pipe (FIFO) if it does not
+ exist yet. If suffixed with
+ <varname>+</varname> and a
+ file already exists where the
+ pipe is to be created, it will
+ be removed and be replaced by
+ the pipe.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>L</varname></term>
- <listitem><para>Create a symlink if it does not exist yet.</para></listitem>
+ <term><varname>L+</varname></term>
+ <listitem><para>Create a
+ symlink if it does not exist
+ yet. If suffixed with
+ <varname>+</varname> and a
+ file already exists where the
+ symlink is to be created, it
+ will be removed and be
+ replaced by the
+ symlink. If the argument is omitted,
+ symlinks to files with the same name
+ residing in the directory
+ <filename>/usr/share/factory/</filename>
+ are created.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>c</varname></term>
- <listitem><para>Create a character device node if it does not exist yet.</para></listitem>
+ <term><varname>c+</varname></term>
+ <listitem><para>Create a
+ character device node if it
+ does not exist yet. If
+ suffixed with
+ <varname>+</varname> and a
+ file already exists where the
+ device node is to be created,
+ it will be removed and be
+ replaced by the device
+ node. It is recommended to suffix this
+ entry with an exclamation mark to only
+ create static device nodes at boot,
+ as udev will not manage static device
+ nodes that are created at runtime.
+ </para></listitem>
</varlistentry>
<varlistentry>
<term><varname>b</varname></term>
- <listitem><para>Create a block device node if it does not exist yet.</para></listitem>
+ <term><varname>b+</varname></term>
+ <listitem><para>Create a block
+ device node if it does not
+ exist yet. If suffixed with
+ <varname>+</varname> and a
+ file already exists where the
+ device node is to be created,
+ it will be removed and be
+ replaced by the device
+ node. It is recommended to suffix this
+ entry with an exclamation mark to only
+ create static device nodes at boot,
+ as udev will not manage static device
+ nodes that are created at runtime.
+ </para></listitem>
</varlistentry>
<varlistentry>
<term><varname>C</varname></term>
- <listitem><para>Recursively copy a file or directory, if the destination files or directories don't exist yet.</para></listitem>
+ <listitem><para>Recursively
+ copy a file or directory, if
+ the destination files or
+ directories do not exist
+ yet. Note that this command
+ will not descend into
+ subdirectories if the
+ destination directory already
+ exists. Instead, the entire
+ copy operation is
+ skipped. If the argument is omitted,
+ files from the source directory
+ <filename>/usr/share/factory/</filename>
+ with the same name are copied.</para></listitem>
</varlistentry>
<varlistentry>
normal path
names.</para></listitem>
</varlistentry>
+
+ <varlistentry>
+ <term><varname>t</varname></term>
+ <listitem><para>Set extended
+ attributes on item. It may be
+ used in conjunction with other
+ types (only <varname>d</varname>,
+ <varname>D</varname>, <varname>f</varname>,
+ <varname>F</varname>, <varname>L</varname>,
+ <varname>p</varname>, <varname>c</varname>,
+ <varname>b</varname>, makes sense).
+ If used as a standalone line, then
+ <command>systemd-tmpfiles</command>
+ will try to set extended
+ attributes on specified path.
+ This can be especially used to set
+ SMACK labels.
+ </para></listitem>
+ </varlistentry>
</variablelist>
<para>If the exclamation mark is used, this
will not be modified. This parameter is
ignored for <varname>x</varname>,
<varname>r</varname>, <varname>R</varname>,
- <varname>L</varname> lines.</para>
+ <varname>L</varname>, <varname>t</varname> lines.</para>
+
+ <para>Optionally, if prefixed with
+ <literal>~</literal>, the access mode is masked
+ based on the already set access bits for
+ existing file or directories: if the existing
+ file has all executable bits unset, all
+ executable bits are removed from the new
+ access mode, too. Similarly, if all read bits
+ are removed from the old access mode, they will
+ be removed from the new access mode too, and
+ if all write bits are removed, they will be
+ removed from the new access mode too. In
+ addition, the sticky/SUID/SGID bit is removed unless
+ applied to a directory. This
+ functionality is particularly useful in
+ conjunction with <varname>Z</varname>.</para>
</refsect2>
<refsect2>
ownership will not be modified. These
parameters are ignored for
<varname>x</varname>, <varname>r</varname>,
- <varname>R</varname>, <varname>L</varname>
- lines.</para>
+ <varname>R</varname>, <varname>L</varname>,
+ <varname>t</varname> lines.</para>
</refsect2>
<refsect2>
and <varname>w</varname> may be used to
specify a short string that is written to the
file, suffixed by a newline. For
- <varname>C</varname> specifies the source file
- or directory. Ignored for all other
- lines.</para>
+ <varname>C</varname>, specifies the source file
+ or directory. For <varname>t</varname> determines
+ extended attributes to be set. Ignored for all other lines.</para>
</refsect2>
</refsect1>
<para><command>screen</command> needs two directories created at boot with specific modes and ownership.</para>
<programlisting>d /run/screens 1777 root root 10d
-d /run/uscreens 0755 root root 10d12h</programlisting>
+d /run/uscreens 0755 root root 10d12h
+t /run/screen - - - - user.name="John Smith" security.SMACK64=screen</programlisting>
</example>
<example>
<title>/etc/tmpfiles.d/abrt.conf example</title>