On 10/31/07, James <[EMAIL PROTECTED]> wrote: > > > On 10/31/07, Michael Grant <[EMAIL PROTECTED]> wrote: > > On 10/31/07, James <[EMAIL PROTECTED]> wrote: > > > > > > > > > > > > On 10/31/07, Michael Grant <[EMAIL PROTECTED] > 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 _______________________________________________ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"