[systemd-commits] 2 commits - Makefile.am man/systemd-tmpfiles.xml man/tmpfiles.d.xml src/tmpfiles tmpfiles.d/legacy.conf tmpfiles.d/systemd.conf tmpfiles.d/systemd-nologin.conf tmpfiles.d/x11.conf units/systemd-tmpfiles-setup.service.in

Zbigniew Jędrzejewski-Szmek zbyszek at kemper.freedesktop.org
Tue Dec 24 12:51:50 PST 2013


 Makefile.am                             |    1 
 man/systemd-tmpfiles.xml                |   59 ++++++---
 man/tmpfiles.d.xml                      |  193 ++++++++++++++++++++------------
 src/tmpfiles/tmpfiles.c                 |   22 +++
 tmpfiles.d/legacy.conf                  |    6 
 tmpfiles.d/systemd-nologin.conf         |   11 +
 tmpfiles.d/systemd.conf                 |    4 
 tmpfiles.d/x11.conf                     |    2 
 units/systemd-tmpfiles-setup.service.in |    7 -
 9 files changed, 205 insertions(+), 100 deletions(-)

New commits:
commit c4708f132381e4bbc864d5241381b5cde4f54878
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Fri Dec 20 20:25:39 2013 -0500

    tmpfiles: introduce the concept of unsafe operations
    
    Various operations done by systemd-tmpfiles may only be safely done at
    boot (e.g. removal of X lockfiles in /tmp, creation of /run/nologin).
    Other operations may be done at any point in time (e.g. setting the
    ownership on /{run,var}/log/journal). This distinction is largely
    orthogonal to the type of operation.
    
    A new switch --unsafe is added, and operations which should only be
    executed during bootup are marked with an exclamation mark in the
    configuration files. systemd-tmpfiles.service is modified to use this
    switch, and guards are added so it is hard to re-start it by mistake.
    
    If we install a new version of systemd, we actually want to enforce
    some changes to tmpfiles configuration immediately. This should now be
    possible to do safely, so distribution packages can be modified to
    execute the "safe" subset at package installation time.
    
    /run/nologin creation is split out into a separate service, to make it
    easy to override.
    
    https://bugzilla.redhat.com/show_bug.cgi?id=1043212
    https://bugzilla.redhat.com/show_bug.cgi?id=1045849

diff --git a/Makefile.am b/Makefile.am
index f4b1958..b7a4681 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1584,6 +1584,7 @@ nodist_systemunit_DATA += \
 
 dist_tmpfiles_DATA = \
 	tmpfiles.d/systemd.conf \
+	tmpfiles.d/systemd-nologin.conf \
 	tmpfiles.d/tmp.conf \
 	tmpfiles.d/x11.conf
 
diff --git a/man/systemd-tmpfiles.xml b/man/systemd-tmpfiles.xml
index c65636b..9b8932c 100644
--- a/man/systemd-tmpfiles.xml
+++ b/man/systemd-tmpfiles.xml
@@ -147,6 +147,12 @@
                                 removed.</para></listitem>
                         </varlistentry>
                         <varlistentry>
+                                <term><option>--unsafe</option></term>
+                                <listitem><para>Also execute lines
+                                with an exclamation mark.
+                                </para></listitem>
+                        </varlistentry>
+                        <varlistentry>
                                 <term><option>--prefix=PATH</option></term>
                                 <listitem><para>Only apply rules that
                                 apply to paths with the specified
diff --git a/man/tmpfiles.d.xml b/man/tmpfiles.d.xml
index 331fd1b..0da52ae 100644
--- a/man/tmpfiles.d.xml
+++ b/man/tmpfiles.d.xml
@@ -113,6 +113,9 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
                 <refsect2>
                         <title>Type</title>
 
+                        <para>The type consists of a single letter and
+                        optionally an exclamation mark.</para>
+
                         <para>The following line types are understood:</para>
 
                         <variablelist>
@@ -262,6 +265,28 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
                                         names.</para></listitem>
                                 </varlistentry>
                         </variablelist>
+
+                        <para>If the exclamation mark is used, this
+                        line is only safe of execute during boot, and
+                        can break a running system. Lines without the
+                        exclamation mark are presumed to be safe to
+                        execute at any time, e.g. on package upgrades.
+                        <command>systemd-tmpfiles</command> will
+                        execute line with an exclamation mark only if
+                        option <option>--unsafe</option> is given.
+                        </para>
+
+                        <para>For example:
+                        <programlisting>
+# Make sure these are created by default so that nobody else can
+d /tmp/.X11-unix 1777 root root 10d
+
+# Unlink the X11 lock files
+r! /tmp/.X[0-9]*-lock
+                        </programlisting>
+                        The second line in contrast to the first one
+                        would break a running system, and will only be
+                        executed with <option>--unsafe</option>.</para>
                 </refsect2>
 
                 <refsect2>
diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
index 02351e1..881c3b0 100644
--- a/src/tmpfiles/tmpfiles.c
+++ b/src/tmpfiles/tmpfiles.c
@@ -107,6 +107,7 @@ static Set *unix_sockets = NULL;
 static bool arg_create = false;
 static bool arg_clean = false;
 static bool arg_remove = false;
+static bool arg_unsafe = false;
 
 static char **include_prefixes = NULL;
 static char **exclude_prefixes = NULL;
@@ -1077,7 +1078,7 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
         _cleanup_item_free_ Item *i = NULL;
         Item *existing;
         _cleanup_free_ char
-                *mode = NULL, *user = NULL, *group = NULL, *age = NULL, *path = NULL;
+                *action = NULL, *mode = NULL, *user = NULL, *group = NULL, *age = NULL, *path = NULL;
         char type;
         Hashmap *h;
         int r, n = -1;
@@ -1087,8 +1088,8 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
         assert(buffer);
 
         r = sscanf(buffer,
-                   "%c %ms %ms %ms %ms %ms %n",
-                   &type,
+                   "%ms %ms %ms %ms %ms %ms %n",
+                   &action,
                    &path,
                    &mode,
                    &user,
@@ -1100,6 +1101,14 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
                 return -EIO;
         }
 
+        if (strlen(action) > 2 || (strlen(action) > 1 && action[1] != '!')) {
+                log_error("[%s:%u] Unknown modifier '%s'", fname, line, action);
+                return -EINVAL;
+        } else if (strlen(action) > 1 && !arg_unsafe)
+                return 0;
+
+        type = action[0];
+
         i = new0(Item, 1);
         if (!i)
                 return log_oom();
@@ -1271,6 +1280,7 @@ static int help(void) {
                "     --create               Create marked files/directories\n"
                "     --clean                Clean up marked directories\n"
                "     --remove               Remove marked files/directories\n"
+               "     --unsafe               Execute actions only safe at boot\n"
                "     --prefix=PATH          Only apply rules that apply to paths with the specified prefix\n"
                "     --exclude-prefix=PATH  Ignore rules that apply to paths with the specified prefix\n",
                program_invocation_short_name);
@@ -1285,6 +1295,7 @@ static int parse_argv(int argc, char *argv[]) {
                 ARG_CREATE,
                 ARG_CLEAN,
                 ARG_REMOVE,
+                ARG_UNSAFE,
                 ARG_PREFIX,
                 ARG_EXCLUDE_PREFIX,
         };
@@ -1295,6 +1306,7 @@ static int parse_argv(int argc, char *argv[]) {
                 { "create",         no_argument,         NULL, ARG_CREATE         },
                 { "clean",          no_argument,         NULL, ARG_CLEAN          },
                 { "remove",         no_argument,         NULL, ARG_REMOVE         },
+                { "unsafe",         no_argument,         NULL, ARG_UNSAFE         },
                 { "prefix",         required_argument,   NULL, ARG_PREFIX         },
                 { "exclude-prefix", required_argument,   NULL, ARG_EXCLUDE_PREFIX },
                 {}
@@ -1329,6 +1341,10 @@ static int parse_argv(int argc, char *argv[]) {
                         arg_remove = true;
                         break;
 
+                case ARG_UNSAFE:
+                        arg_unsafe = true;
+                        break;
+
                 case ARG_PREFIX:
                         if (strv_extend(&include_prefixes, optarg) < 0)
                                 return log_oom();
diff --git a/tmpfiles.d/legacy.conf b/tmpfiles.d/legacy.conf
index 3fff347..a165687 100644
--- a/tmpfiles.d/legacy.conf
+++ b/tmpfiles.d/legacy.conf
@@ -29,6 +29,6 @@ d /run/lock/lockdev 0775 root lock -
 # kernel command line options 'fsck.mode=force', 'fsck.mode=skip' and
 # 'quotacheck.mode=force'
 
-r /forcefsck
-r /fastboot
-r /forcequotacheck
+r! /forcefsck
+r! /fastboot
+r! /forcequotacheck
diff --git a/tmpfiles.d/systemd-nologin.conf b/tmpfiles.d/systemd-nologin.conf
new file mode 100644
index 0000000..d61232b
--- /dev/null
+++ b/tmpfiles.d/systemd-nologin.conf
@@ -0,0 +1,11 @@
+#  This file is part of systemd.
+#
+#  systemd is free software; you can redistribute it and/or modify it
+#  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
+#  (at your option) any later version.
+
+# See tmpfiles.d(5) and systemd-forbid-user-logins.service(5).
+# This file has special suffix so it is not run by mistake.
+
+F! /run/nologin 0644 - - - "System is booting up. See pam_nologin(8)"
diff --git a/tmpfiles.d/systemd.conf b/tmpfiles.d/systemd.conf
index a05c657..7c6d6b9 100644
--- a/tmpfiles.d/systemd.conf
+++ b/tmpfiles.d/systemd.conf
@@ -8,7 +8,7 @@
 # See tmpfiles.d(5) for details
 
 d /run/user 0755 root root ~10d
-F /run/utmp 0664 root utmp -
+F! /run/utmp 0664 root utmp -
 
 f /var/log/wtmp 0664 root utmp -
 f /var/log/btmp 0600 root utmp -
@@ -22,8 +22,6 @@ d /run/systemd/users 0755 root root -
 d /run/systemd/machines 0755 root root -
 d /run/systemd/shutdown 0755 root root -
 
-F /run/nologin 0644 - - - "System is booting up. See pam_nologin(8)"
-
 m /var/log/journal 2755 root systemd-journal - -
 m /var/log/journal/%m 2755 root systemd-journal - -
 m /run/log/journal 2755 root systemd-journal - -
diff --git a/tmpfiles.d/x11.conf b/tmpfiles.d/x11.conf
index ece6a5c..4c96a54 100644
--- a/tmpfiles.d/x11.conf
+++ b/tmpfiles.d/x11.conf
@@ -15,4 +15,4 @@ d /tmp/.font-unix 1777 root root 10d
 d /tmp/.Test-unix 1777 root root 10d
 
 # Unlink the X11 lock files
-r /tmp/.X[0-9]*-lock
+r! /tmp/.X[0-9]*-lock
diff --git a/units/systemd-tmpfiles-setup.service.in b/units/systemd-tmpfiles-setup.service.in
index 3405e28..c2dcae0 100644
--- a/units/systemd-tmpfiles-setup.service.in
+++ b/units/systemd-tmpfiles-setup.service.in
@@ -6,7 +6,7 @@
 #  (at your option) any later version.
 
 [Unit]
-Description=Recreate Volatile Files and Directories
+Description=Create Volatile Files and Directories
 Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
 DefaultDependencies=no
 Wants=local-fs.target
@@ -18,8 +18,10 @@ ConditionDirectoryNotEmpty=|/lib/tmpfiles.d
 ConditionDirectoryNotEmpty=|/usr/local/lib/tmpfiles.d
 ConditionDirectoryNotEmpty=|/etc/tmpfiles.d
 ConditionDirectoryNotEmpty=|/run/tmpfiles.d
+RefuseManualStart=yes
+RefuseManualStop=yes
 
 [Service]
 Type=oneshot
 RemainAfterExit=yes
-ExecStart=@rootbindir@/systemd-tmpfiles --create --remove --exclude-prefix=/dev
+ExecStart=@rootbindir@/systemd-tmpfiles --create --remove --unsafe --exclude-prefix=/dev

commit ef72c1f06e2bc696a799cd31a1e0ed25cc999ea4
Author: Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl>
Date:   Tue Dec 24 10:21:45 2013 -0500

    man,units: tmpfiles.d(5) cleanup
    
    Condition for /lib (necessary for split /usr) was missing from the unit.
    
    Some changes which were done in tmpfiles.d(5) were not carried over to
    systemd-tmpfiles(1).
    
    Also use markup where possible.

diff --git a/man/systemd-tmpfiles.xml b/man/systemd-tmpfiles.xml
index b90bd75..c65636b 100644
--- a/man/systemd-tmpfiles.xml
+++ b/man/systemd-tmpfiles.xml
@@ -54,7 +54,9 @@
 
         <refsynopsisdiv>
                 <cmdsynopsis>
-                        <command>systemd-tmpfiles <arg choice="opt" rep="repeat">OPTIONS</arg> <arg choice="opt" rep="repeat">CONFIGURATION FILE</arg></command>
+                        <command>systemd-tmpfiles</command>
+                        <arg choice="opt" rep="repeat">OPTIONS</arg>
+                        <arg choice="opt" rep="repeat"><replaceable>CONFIGFILE</replaceable></arg>
                 </cmdsynopsis>
 
                 <para><filename>systemd-tmpfiles-setup.service</filename></para>
@@ -67,22 +69,20 @@
                 <title>Description</title>
 
                 <para><command>systemd-tmpfiles</command> creates,
-                deletes and cleans up volatile and temporary files and
+                deletes, and cleans up volatile and temporary files and
                 directories, based on the configuration file format and
-                location specified in <citerefentry>
-                        <refentrytitle>tmpfiles.d</refentrytitle>
-                        <manvolnum>5</manvolnum>
-                </citerefentry>.</para>
+                location specified in
+                <citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
+                </para>
 
                 <para>If invoked with no arguments, it applies all
                 directives from all configuration files. If one or
                 more filenames are passed on the command line, only
                 the directives in these files are applied. If only
                 the basename of a configuration file is specified,
-                all configuration directories as specified in <citerefentry>
-                        <refentrytitle>tmpfiles.d</refentrytitle>
-                        <manvolnum>5</manvolnum>
-                </citerefentry> are searched for a matching file.</para>
+                all configuration directories as specified in
+                <citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+                are searched for a matching file.</para>
         </refsect1>
 
         <refsect1>
@@ -108,12 +108,25 @@
 
                         <varlistentry>
                                 <term><option>--create</option></term>
-                                <listitem><para>If this option is passed, all
-                                files and directories marked with f,
-                                F, d, D in the configuration files are
-                                created. Files and directories marked with z,
-                                Z have their ownership, access mode and security
-                                labels set.</para></listitem>
+                                <listitem><para>If this option is
+                                passed, all files and directories
+                                marked with <varname>f</varname>,
+                                <varname>F</varname>,
+                                <varname>w</varname>,
+                                <varname>d</varname>,
+                                <varname>D</varname>,
+                                <varname>p</varname>,
+                                <varname>L</varname>,
+                                <varname>c</varname>,
+                                <varname>b</varname>,
+                                <varname>m</varname> in the
+                                configuration files are created or
+                                written to. Files and directories
+                                marked with <varname>z</varname>,
+                                <varname>Z</varname>,
+                                <varname>m</varname> have their
+                                ownership, access mode and security
+                                labels set. </para></listitem>
                         </varlistentry>
 
                         <varlistentry>
@@ -127,9 +140,11 @@
                         <varlistentry>
                                 <term><option>--remove</option></term>
                                 <listitem><para>If this option is
-                                passed, all files and directories marked
-                                with r, R in the configuration files
-                                are removed.</para></listitem>
+                                passed, all files and directories
+                                marked with <varname>r</varname>,
+                                <varname>R</varname> in the
+                                configuration files are
+                                removed.</para></listitem>
                         </varlistentry>
                         <varlistentry>
                                 <term><option>--prefix=PATH</option></term>
diff --git a/man/tmpfiles.d.xml b/man/tmpfiles.d.xml
index 1c079f6..331fd1b 100644
--- a/man/tmpfiles.d.xml
+++ b/man/tmpfiles.d.xml
@@ -67,23 +67,32 @@
                 <title>Configuration Format</title>
 
                 <para>Each configuration file shall be named in the
-                style of <filename><package>.conf</filename>.
-                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
+                style of
+                <filename><replaceable>package</replaceable>.conf</filename>
+                or
+                <filename><replaceable>package</replaceable>-<replaceable>part</replaceable>.conf</filename>.
+                The second variant should be used when it is desirable
+                to make it easy to override just this part of
+                configuration.</para>
+
+                <para>Files in <filename>/etc/tmpfiles.d</filename>
+                override files with the same name in
+                <filename>/usr/lib/tmpfiles.d</filename> and
+                <filename>/run/tmpfiles.d</filename>. Files in
+                <filename>/run/tmpfiles.d</filename> override files
+                with the same name in
+                <filename>/usr/lib/tmpfiles.d</filename>. Packages
                 should install their configuration files in
-                <filename>/usr/lib/</filename>. Files in
-                <filename>/etc/</filename> are reserved for the local
-                administrator, who may use this logic to override the
-                configuration files installed by vendor packages. All
-                configuration files are sorted by their filename in
-                lexicographic order, regardless in which of the
-                directories they reside. 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>
+                <filename>/usr/lib/tmpfiles.d</filename>. Files in
+                <filename>/etc/tmpfiles.d</filename> are reserved for
+                the local administrator, who may use this logic to
+                override the configuration files installed by vendor
+                packages. All configuration files are sorted by their
+                filename in lexicographic order, regardless in which
+                of the directories they reside. 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>
 
                 <para>If the administrator wants to disable a
                 configuration file supplied by the vendor, the
@@ -93,10 +102,10 @@
                 same filename.</para>
 
                 <para>The configuration format is one line per path
-                containing action, path, mode, ownership, age and argument
+                containing type, path, mode, ownership, age, and argument
                 fields:</para>
 
-                <programlisting>Type Path        Mode UID  GID  Age Argument
+                <programlisting>#Type Path        Mode UID  GID  Age Argument
 d    /run/user   0755 root root 10d -
 L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
 
@@ -109,12 +118,12 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
                         <variablelist>
                                 <varlistentry>
                                         <term><varname>f</varname></term>
-                                        <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>
+                                        <listitem><para>Create a file if it does not exist yet. If the argument parameter is given, it will be written to the file.</para></listitem>
                                 </varlistentry>
 
                                 <varlistentry>
                                         <term><varname>F</varname></term>
-                                        <listitem><para>Create or truncate a file (optionally writing a short string into it, if the argument parameter is passed)</para></listitem>
+                                        <listitem><para>Create or truncate a file. If the argument parameter is given, it will be written to the file.</para></listitem>
                                 </varlistentry>
 
                                 <varlistentry>
@@ -127,32 +136,32 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
 
                                 <varlistentry>
                                         <term><varname>d</varname></term>
-                                        <listitem><para>Create a directory if it does not exist yet</para></listitem>
+                                        <listitem><para>Create a directory if it does not exist yet.</para></listitem>
                                 </varlistentry>
 
                                 <varlistentry>
                                         <term><varname>D</varname></term>
-                                        <listitem><para>Create or empty a directory</para></listitem>
+                                        <listitem><para>Create or empty a directory.</para></listitem>
                                 </varlistentry>
 
                                 <varlistentry>
                                         <term><varname>p</varname></term>
-                                        <listitem><para>Create a named pipe (FIFO) if it does not exist yet</para></listitem>
+                                        <listitem><para>Create a named pipe (FIFO) if it does not exist yet.</para></listitem>
                                 </varlistentry>
 
                                 <varlistentry>
                                         <term><varname>L</varname></term>
-                                        <listitem><para>Create a symlink if it does not exist yet</para></listitem>
+                                        <listitem><para>Create a symlink if it does not exist yet.</para></listitem>
                                 </varlistentry>
 
                                 <varlistentry>
                                         <term><varname>c</varname></term>
-                                        <listitem><para>Create a character device node if it does not exist yet</para></listitem>
+                                        <listitem><para>Create a character device node if it does not exist yet.</para></listitem>
                                 </varlistentry>
 
                                 <varlistentry>
                                         <term><varname>b</varname></term>
-                                        <listitem><para>Create a block device node if it does not exist yet</para></listitem>
+                                        <listitem><para>Create a block device node if it does not exist yet.</para></listitem>
                                 </varlistentry>
 
                                 <varlistentry>
@@ -174,11 +183,12 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
                                         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
+                                        effect of <varname>r</varname>
+                                        or <varname>R</varname> lines.
+                                        Lines of this type accept
                                         shell-style globs in place of
-                                        normal path
-                                        names.</para></listitem>
+                                        normal path names.
+                                        </para></listitem>
                                 </varlistentry>
 
                                 <varlistentry>
@@ -187,28 +197,31 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
                                         during cleaning. Use this type
                                         to exclude paths from clean-up
                                         as controlled with the Age
-                                        parameter. Unlike x, this
+                                        parameter. Unlike
+                                        <varname>x</varname>, this
                                         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
-                                        names.</para></listitem>
+                                        content if path is a
+                                        directory, but only directory
+                                        itself. Note that lines of
+                                        this type do not influence the
+                                        effect of <varname>r</varname>
+                                        or <varname>R</varname> lines.
+                                        Lines of this type accept
+                                        shell-style globs in place of
+                                        normal path names.
+                                        </para></listitem>
                                 </varlistentry>
 
                                 <varlistentry>
                                         <term><varname>r</varname></term>
                                         <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
+                                        or directory if it exists.
+                                        This may not be used to remove
+                                        non-empty directories, use
+                                        <varname>R</varname> for that.
+                                        Lines of this type accept
+                                        shell-style globs in place of
+                                        normal path
                                         names.</para></listitem>
                                 </varlistentry>
 
@@ -308,11 +321,14 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
                         <para>The file access mode to use when
                         creating this file or directory. If omitted or
                         when set to -, the default is used: 0755 for
-                        directories, 0644 for all other file
-                        objects. For z, Z lines, if omitted or when set
-                        to -, the file access mode will not be
-                        modified. This parameter is ignored for x, r,
-                        R, L lines.</para>
+                        directories, 0644 for all other file objects.
+                        For <varname>z</varname>, <varname>Z</varname>
+                        lines, if omitted or when set to
+                        <literal>-</literal>, the file access mode
+                        will not be modified. This parameter is
+                        ignored for <varname>x</varname>,
+                        <varname>r</varname>, <varname>R</varname>,
+                        <varname>L</varname> lines.</para>
                 </refsect2>
 
                 <refsect2>
@@ -321,10 +337,15 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
                         <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
-                        omitted or when set to -, the default 0 (root)
-                        is used. For z, Z lines, when omitted or when set to -,
-                        the file ownership will not be modified.
-                        These parameters are ignored for x, r, R, L lines.</para>
+                        omitted or when set to <literal>-</literal>,
+                        the default 0 (root) is used. For
+                        <varname>z</varname>, <varname>Z</varname>
+                        lines, when omitted or when set to -, the file
+                        ownership will not be modified. These
+                        parameters are ignored for
+                        <varname>x</varname>, <varname>r</varname>,
+                        <varname>R</varname>, <varname>L</varname>
+                        lines.</para>
                 </refsect2>
 
                 <refsect2>
@@ -357,28 +378,37 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
                         <para>When the age is set to zero, the files are cleaned
                         unconditionally.</para>
 
-                        <para>The age field only applies to lines starting with
-                        d, D and x. If omitted or set to -, no automatic clean-up
-                        is done.</para>
+                        <para>The age field only applies to lines
+                        starting with <varname>d</varname>,
+                        <varname>D</varname>, and
+                        <varname>x</varname>. If omitted or set to
+                        <literal>-</literal>, no automatic clean-up is
+                        done.</para>
 
                         <para>If the age field starts with a tilde
-                        character (~), the clean-up is only applied to
-                        files and directories one level inside the
-                        directory specified, but not the files and
-                        directories immediately inside it.</para>
+                        character <literal>~</literal>, the clean-up
+                        is only applied to files and directories one
+                        level inside the directory specified, but not
+                        the files and directories immediately inside
+                        it.</para>
                 </refsect2>
 
                 <refsect2>
                         <title>Argument</title>
 
-                        <para>For L lines determines the destination
-                        path of the symlink. For c, b determines the
+                        <para>For <varname>L</varname> lines
+                        determines the destination path of the
+                        symlink. For <varname>c</varname>,
+                        <varname>b</varname> determines the
                         major/minor of the device node, with major and
-                        minor formatted as integers, separated by :,
-                        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>
+                        minor formatted as integers, separated by
+                        <literal>:</literal>, e.g.
+                        <literal>1:3</literal>. For
+                        <varname>f</varname>, <varname>F</varname>,
+                        and <varname>w</varname> may be used to
+                        specify a short string that is written to the
+                        file, suffixed by a newline. Ignored for all
+                        other lines.</para>
                 </refsect2>
 
         </refsect1>
diff --git a/units/systemd-tmpfiles-setup.service.in b/units/systemd-tmpfiles-setup.service.in
index 6f98063..3405e28 100644
--- a/units/systemd-tmpfiles-setup.service.in
+++ b/units/systemd-tmpfiles-setup.service.in
@@ -14,6 +14,7 @@ Conflicts=shutdown.target
 After=systemd-readahead-collect.service systemd-readahead-replay.service local-fs.target
 Before=sysinit.target shutdown.target
 ConditionDirectoryNotEmpty=|/usr/lib/tmpfiles.d
+ConditionDirectoryNotEmpty=|/lib/tmpfiles.d
 ConditionDirectoryNotEmpty=|/usr/local/lib/tmpfiles.d
 ConditionDirectoryNotEmpty=|/etc/tmpfiles.d
 ConditionDirectoryNotEmpty=|/run/tmpfiles.d



More information about the systemd-commits mailing list