Drop from root to user preserving ALL environment variables

Viewed 28

The following bash command works to drop down to user privileges, and preserve an environment for the most part:

root@machine:/root# DOLPHIN=1 sudo -E -u someuser bash -c 'echo $DOLPHIN'
1

However, this does not work for all variables, such as PATH, and LD_LIBRARY_PATH:

root@machine:/root# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
root@machine:/root# sudo -E -u someuser bash -c 'echo $PATH'
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

Notice the PATH is different ^

Why is this happening?

Must be some bash mechanics I don't understand...

1 Answers

Looks like this is a workable option:

root@machine:/root# sudo PATH=$PATH LD_LIBRARY_PATH=$LD_LIBRARY_PATH -E -u someuser bash -c 'echo $PATH'
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Related