mirror of
https://github.com/systemd/systemd.git
synced 2025-03-25 18:50:18 +03:00
core/execute: set HOME, USER also for root users
This changes the environment for services running as root from: LANG=C.utf8 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin INVOCATION_ID=ffbdec203c69499a9b83199333e31555 JOURNAL_STREAM=8:1614518 to LANG=C.utf8 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin HOME=/root LOGNAME=root USER=root SHELL=/bin/sh INVOCATION_ID=15a077963d7b4ca0b82c91dc6519f87c JOURNAL_STREAM=8:1616718 Making the environment special for the root user complicates things unnecessarily. This change simplifies both our logic (by making the setting of the variables unconditional), and should also simplify the logic in services (particularly scripts). Fixes #5124.
This commit is contained in:
parent
d201d90838
commit
8b89628a10
@ -1694,9 +1694,7 @@
|
||||
<term><varname>$SHELL</varname></term>
|
||||
|
||||
<listitem><para>User name (twice), home directory, and the
|
||||
login shell. The variables are set for the units that have
|
||||
<varname>User=</varname> set, which includes user
|
||||
<command>systemd</command> instances. See
|
||||
login shell. See
|
||||
<citerefentry project='die-net'><refentrytitle>passwd</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
@ -815,13 +815,10 @@ 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;
|
||||
name = c->user ?: "root";
|
||||
r = get_user_creds_clean(&name, uid, gid, home, shell);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
Loading…
x
Reference in New Issue
Block a user