It seems when
sudoing down that using
sudo -u $user that the environment of root is still being used. How can I make
sudo use the users environment? as a special note not all users that I will be using this on have login shells.
man sudoers on Debian mentions another possibility. Not sure which way around you want, but your question sounds like you would want to have the
env_reset option from
/etc/sudoers - the opposite is basically the
env_keep list. In order to set the proper
HOME you can use the
-H option to
sudo directly or, again in
sudoers, with the
Alternatively you could use
env_file to specify an exact environment you want to pass. However, I think it is best if you check out the
env_* options from
man sudoers, because
/etc/sudoers controls it all and that's the point to turn to.
Here's part of the context in which I use
env_reset inside my
Defaults !lecture Defaults env_reset Defaults syslog=auth Defaults log_year
When sudoing environment variables are not preserved.
In my case, I use here-document.
You put your actions such as
my_script.sh inside your HERE DOCUMENT :
su -u some_user <<EOF ./my_script.sh EOF
You should not put variable directly here, as they would be interpreted from your current user.
su -u some_user <<EOF ./my_script.sh $MY_VAR EOF
$MY_VAR is not set for the user running the script, it won't be set.
You variable must be called inside your scripts, or you must escape them with
su -u some_user <<EOF ./my_script.sh \$MY_VAR EOF
$MY_VAR will have
some_user contextual value.