Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 31 Oct 2007 08:52:51 -0600
From:      James <oscartheduck@gmail.com>
To:        "Michael Grant" <mg-fbsd3@grant.org>
Cc:        FreeBSD Questions <freebsd-questions@freebsd.org>
Subject:   Re: ssh
Message-ID:  <d59e90ab0710310752w7a427f47r6182555f309829d9@mail.gmail.com>
In-Reply-To: <62b856460710310723j6d5e0928rf601195caf6a5deb@mail.gmail.com>
References:  <62b856460710310231h3bc517cdl20300179ac6f1a39@mail.gmail.com> <d59e90ab0710310530t79fb80c5h39f7e735d148d16a@mail.gmail.com> <62b856460710310620v588222edj620e8519643881a3@mail.gmail.com> <d59e90ab0710310649y2d40a8dbrecdaa1ecd35d1e81@mail.gmail.com> <62b856460710310723j6d5e0928rf601195caf6a5deb@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 10/31/07, Michael Grant <mg-fbsd3@grant.org> wrote:
>
> On 10/31/07, James <oscartheduck@gmail.com> wrote:
> >
> >
> > On 10/31/07, Michael Grant <mg-fbsd3@grant.org> wrote:
> > > On 10/31/07, James <oscartheduck@gmail.com> wrote:
> > > >
> > > >
> > > >
> > > > On 10/31/07, Michael Grant <mg-fbsd3@grant.org > wrote:
> > > > >
> > > > > If I'm sued as root and I ssh somewhere, ssh/scp reads it's files
> from
> > > > > /root/.ssh/.  The docs say it reads from ~/.ssh which is what I
> want,
> > > > > but it's not doing that.  When sued, the shell is properly
> expanding ~
> > > > > to my home dir.
> > > > >
> > > > > Anyone know of a way around this behavior?
> > > > >
> > > > > Michael Grant
> > > >
> > > >
> > > > su - root
> > >
> > > Nope.  One other suggestion was 'su -l root'.  This does not change
> > > the situation either.
> > >
> > > I went into the source for ssh and it does a getuid() and then gets
> > > the homedir of that uid.  So no amount of fooling with su is gonig to
> > > fix this.  I guess it's like this for security reasons, it sure seems
> > > like a bug to me.  I'd have used the HOME enviroment variable.
> > >
> > > So far, the best fix I've found is to create some aliases in bash as
> > follows:
> > >
> > > alias scp="scp -o User=username -i ~/.ssh/id_rsa"
> > > alias ssh="ssh -l username -i ~/.ssh/id_rsa"
> > > alias rsync="rsync -op -e 'ssh -l username -i
> /home/username/.ssh/id_rsa'"
> > >
> >
> >
> >
> > Yeah, I misread your problem. Are you saying that you want to su to
> root,
> > but still have some variables set as they were on the account you sued
> from?
> > So you have a user named Michael, say, and you su to root, but when you
> ssh
> > you want Michael's .ssh to be the effective one?
>
> Well sort of.  When I su, $HOME is set to my homedir and $USER set to
> mgrant.  This is fine.  However, ssh (when sued) doesn't read
> $HOME/.ssh, it reads /root/.ssh. And it's not defaulting to logging
> into the remote machine as $USER, it tries to log in as root.  It does
> this because it's hardwired in the code more or less as follows (I've
> extracted the relevant code from ssh.c):
>
>     original_real_uid = getuid();
>     pw = getpwuid(original_real_uid);
>     sprintf(buf, "%s/%s", pw->pw_dir, "ssh-config");
>     read_config_file(buf);
>     options.user = strdup(pw->pw_name);
>
> Like I said, it seems like a bug to me.  Personally I would have done
> a getenv("HOME") and getenv("USER") myself instead of depending on the
> userid.  Probably they had good reason for doing it the way they did
> it.
>
> So I think the problem is unsolvable using options to su.  Only
> solution I found so far was the aliases above.
>
> Michael Grant
>

You could just pop your code in there and compile it as you want it. Maybe
submit it back to openssh as a bugfix.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?d59e90ab0710310752w7a427f47r6182555f309829d9>