summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--man/systemd.exec.xml4
-rw-r--r--src/core/execute.c5
2 files changed, 7 insertions, 2 deletions
diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml
index 2ce0c7d246..c3c3630154 100644
--- a/man/systemd.exec.xml
+++ b/man/systemd.exec.xml
@@ -1705,7 +1705,9 @@
<term><varname>$SHELL</varname></term>
<listitem><para>User name (twice), home directory, and the
- login shell. See
+ login shell. The variables are set for the units that have
+ <varname>User=</varname> set, which includes user
+ <command>systemd</command> instances. See
<citerefentry project='die-net'><refentrytitle>passwd</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
</para></listitem>
</varlistentry>
diff --git a/src/core/execute.c b/src/core/execute.c
index f57eb26388..1e32697723 100644
--- a/src/core/execute.c
+++ b/src/core/execute.c
@@ -815,10 +815,13 @@ static int get_fixed_user(const ExecContext *c, const char **user,
assert(c);
+ if (!c->user)
+ return 0;
+
/* Note that we don't set $HOME or $SHELL if they are not particularly enlightening anyway
* (i.e. are "/" or "/bin/nologin"). */
- name = c->user ?: "root";
+ name = c->user;
r = get_user_creds_clean(&name, uid, gid, home, shell);
if (r < 0)
return r;