runuser do not preserve env

Elan Ruusamäe glen at delfi.ee
Mon Apr 16 21:08:18 CEST 2018


doesn't seem like runuser resets env...

seems to me that these days only reliable way to switch user is using 
sudo, no standard tools available...


# rpm -qf `which runuser`
util-linux-2.31-2.x86_64

# runuser --help

Usage:
  runuser [options] -u <user> [[--] <command>]
  runuser [options] [-] [<user> [<argument>...]]

Run <command> with the effective user ID and group ID of <user>.  If -u is
not given, fall back to su(1)-compatible semantics and execute standard 
shell.
The options -c, -f, -l, and -s are mutually exclusive with -u.

Options:
  -u, --user <user>               username
  -m, -p, --preserve-environment  do not reset environment variables
  -g, --group <group>             specify the primary group
  -G, --supp-group <group>        specify a supplemental group

  -, -l, --login                  make the shell a login shell
  -c, --command <command>         pass a single command to the shell with -c
  --session-command <command>     pass a single command to the shell with -c
                                    and do not create a new session
  -f, --fast                      pass -f to the shell (for csh or tcsh)
  -s, --shell <shell>             run <shell> if /etc/shells allows it
  -P, --pty                       create a new pseudo-terminal

  -h, --help                      display this help
  -V, --version                   display version


For more details see runuser(1).

# env TMP111=foo runuser -u http -- env|grep TMP

TMP=/home/glen/tmp
TMPDIR=/home/glen/tmp
TMP111=foo

and "login shell" has completely useless purpose

$ env TMP111=foo runuser -l -u http -- env|grep TMP
runuser: options --{shell,fast,command,session-command,login} and --user 
are mutually exclusive


More information about the pld-devel-en mailing list