FYI tech@, there was a thread on misc@ about
sudo -iu not setting some environment variables:
http://thread.gmane.org/gmane.os.openbsd.misc/211823/


On 2014-04-08 Tue 09:26 AM |, Craig R. Skinner wrote:
> To clarify, there are no ~/. shell dot files.
> 
> $PATH & umask are set in /etc/login.conf
> $MAIL is the default set by login(1)
> 
> /etc/profile sources /etc/ksh.kshrc, which just sets $PS1,
> window decor & some aliases, nothing major.
> 
> This arrangement works fine when logging in directly,
> or via "sudo su -l user"
> 
> From my reading of sudo(8), I thought the same environment could be
> gained with something like "sudo -H -i -u username".
> 
> Am I missing sudo flags or settings in /etc/sudoers?
> 
> 
> On 2014-04-04 Fri 11:30 AM |, Craig R. Skinner wrote:
> > Hi,
> > 
> > When sudo'ing to another user, how can I obtain all of their environment
> > settings as they receive when logging in themselves?
> > 
> > When I use sudo in this manner, settings such as $PATH, $MAIL & umask
> > aren't being honoured:
> > 
> > 
> > $ echo $LOGNAME; echo $PATH; echo $MAIL; umask
> > craig
> > /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/sbin:/usr/site/bin:/usr/site/sbin:/home/craig/bin
> > /var/mail/craig
> > 027
> > 
> > 
> > 
> > Here, $PATH, $MAIL & umask are unchanged:
> > 
> > $ sudo -H -i -u david
> > $ echo $LOGNAME; echo $PATH; echo $MAIL; umask
> > david
> > /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/sbin:/usr/site/bin:/usr/site/sbin:/home/craig/bin
> > /var/mail/craig
> > 027
> > 
> > 
> > Compare the difference when logging in as that user:
> > 
> > $ login david
> > ...
> > $ echo $LOGNAME; echo $PATH; echo $MAIL; umask
> > david
> > /usr/bin:/bin:/usr/local/bin:/usr/site/bin:/home/david/bin
> > /var/mail/david
> > 022
> > 
> > 
> > 
> > 
> > /etc/login.conf:
> > default:\
> >     :passwordcheck=/usr/local/bin/pwqcheck -1:\
> >     :passwordtries=0:\
> >     :path=/usr/bin /bin /usr/local/bin /usr/site/bin ~/bin:\
> >     :umask=022:\
> >     :datasize-cur=....
> > 
> > staff:\
> >     :path=/usr/bin /bin /usr/sbin /sbin /usr/local/bin /usr/local/sbin 
> > /usr/site/bin /usr/site/sbin ~/bin:\
> >     :umask=027:\
> >     :datasize-cur=....
> > 
> > 
> > $ egrep 'env_|Defaults' /etc/sudoers | grep -v ^#
> > Defaults env_keep +="DESTDIR DISTDIR EDITOR FETCH_CMD FLAVOR FTPMODE GROUP 
> > MAKE"
> > Defaults env_keep +="MAKECONF MULTI_PACKAGES NOMAN OKAY_FILES OWNER 
> > PKG_CACHE"
> > Defaults env_keep +="PKG_DBDIR PKG_DESTDIR PKG_PATH PKG_TMPDIR PORTSDIR"
> > Defaults env_keep +="RELEASEDIR SHARED_ONLY SSH_AUTH_SOCK SUBPACKAGE VISUAL"
> > Defaults env_keep +="WRKOBJDIR"
> > Defaults always_set_home, ignore_dot, use_loginclass
> > 
> > 
> > 
> > login(1):
> > 
> >      login enters information into the environment (see environ(7)) 
> > specifying
> >      the user's home directory (HOME), command interpreter (SHELL), search
> >      path (PATH), terminal type (TERM), and user name (both LOGNAME and 
> > USER).
> > 
> > ENVIRONMENT
> >      login sets the following environment variables:
> > 
> >      HOME
> >      MAIL
> > 
> > sudo(8):
> > 
> >   Command Environment
> >      ......................  On BSD systems, if the use_loginclass option is
> >      enabled, the environment is initialized based on the path and setenv
> >      settings in /etc/login.conf.  The new environment contains the TERM,
> >      PATH, HOME, MAIL, SHELL, LOGNAME, USER, USERNAME and SUDO_* variables 
> > in
> >      addition to variables from the invoking process permitted by the
> >      env_check and env_keep options.  This is effectively a whitelist for
> >      environment variables.
> > 
> > 
> > 
> > How can I become another user - without knowing their password,
> > and gain their 'natural' environment?
> > 
> > e.g. from wheel group to a users group member.
> > 
> > 'su -l username' & 'login username' require their password.
> > 
> > I thought 'sudo -H -i -u username' would do it.
> > 
> > Any suggestions on what else I need to configure?
> 

Reply via email to