threads / discuss / 32864

Permission denied on home dir results in fatal error as of 1.8.1.1

Subject: Permission denied on home dir results in fatal error as of 1.8.1.1

## tl;dr

4 messages between Feb 9, 2013 and Feb 9, 2013.

replies: 3people: 3as markdown or json

Nick Muerdter· Feb 9, 2013, 00:40 UTC · lore

As of git 1.8.1.1 and above (tested up to 1.8.1.3), if the home directory can't be accessed, it results in a fatal error. In git 1.8.1 and below this same setup just resulted in warnings. Was this an intentional change?

I ran into this in a situation where sudo is being used to execute a script as root and then git ends up getting executed as a different user. In this case HOME ends up being /root when git is called as this different user. This home value is obviously incorrect, so there's an issue there, but it would be perhaps be nice if this still just resulted in warnings.

Here's a simple way to reproduce if run as a non-root user:
git 1.8.1.1 (fatal error, doesn't work):

$ env HOME=/root git ls-remote http://github.com/sstephenson/rbenv.git v0.4.0 fatal: unable to access '/root/.config/git/config': Permission denied

git 1.8.1 (warnings, but still works):

$ env HOME=/root git ls-remote http://github.com/sstephenson/rbenv.git v0.4.0 warning: unable to access '/root/.config/git/config': Permission denied warning: unable to access '/root/.gitconfig': Permission denied warning: unable to access '/root/.config/git/config': Permission denied warning: unable to access '/root/.gitconfig': Permission denied warning: unable to access '/root/.config/git/config': Permission denied warning: unable to access '/root/.gitconfig': Permission denied warning: unable to access '/root/.config/git/config': Permission denied warning: unable to access '/root/.gitconfig': Permission denied 9375e99f921f428849f19efe2a2e500b3295d1a7 refs/tags/v0.4.0

Thanks, Nick

Junio C Hamano· Feb 9, 2013, 00:50 UTC · re: Nick Muerdter · lore

Re: Permission denied on home dir results in fatal error as of 1.8.1.1

Nick Muerdter <stuff@nickm.org> writes:
> As of git 1.8.1.1 and above (tested up to 1.8.1.3), if the home
> directory can't be accessed, it results in a fatal error. In git 1.8.1
> and below this same setup just resulted in warnings. Was this an
> intentional change?

I think this was done to not just help diagnosing misconfiguration, but to prevent an unintended misconfiguration from causing problems (e.g. the user thinks user.name is set up correctly, but forbids Git from reading it from the configuration files, and ends up creating commits under wrong names).

Somebody please correct me if this weren't the case...
Jonathan Nieder· Feb 9, 2013, 01:05 UTC · re: Junio C Hamano · lore

Re: Permission denied on home dir results in fatal error as of 1.8.1.1

Junio C Hamano wrote:
> Nick Muerdter <stuff@nickm.org> writes:
Show 10 quoted lines
>> As of git 1.8.1.1 and above (tested up to 1.8.1.3), if the home
>> directory can't be accessed, it results in a fatal error. In git 1.8.1
>> and below this same setup just resulted in warnings. Was this an
>> intentional change?
>
> I think this was done to not just help diagnosing misconfiguration,
> but to prevent an unintended misconfiguration from causing problems
> (e.g. the user thinks user.name is set up correctly, but forbids Git
> from reading it from the configuration files, and ends up creating
> commits under wrong names).

Yes, that's right. Sometimes ignoring settings has bad consequences, so git errors out to let the user intervene and decide whether the inaccessible settings are important.

Thanks, Jonathan

Nick Muerdter· Feb 9, 2013, 02:33 UTC · re: Jonathan Nieder · lore

Re: Permission denied on home dir results in fatal error as of 1.8.1.1

On Fri, Feb 8, 2013 at 6:05 PM, Jonathan Nieder <jrnieder@gmail.com> wrote:
Show 17 quoted lines
> Junio C Hamano wrote:
>> Nick Muerdter <stuff@nickm.org> writes:
>
>>> As of git 1.8.1.1 and above (tested up to 1.8.1.3), if the home
>>> directory can't be accessed, it results in a fatal error. In git 1.8.1
>>> and below this same setup just resulted in warnings. Was this an
>>> intentional change?
>>
>> I think this was done to not just help diagnosing misconfiguration,
>> but to prevent an unintended misconfiguration from causing problems
>> (e.g. the user thinks user.name is set up correctly, but forbids Git
>> from reading it from the configuration files, and ends up creating
>> commits under wrong names).
>
> Yes, that's right.  Sometimes ignoring settings has bad consequences,
> so git errors out to let the user intervene and decide whether the
> inaccessible settings are important.
Thanks for the quick response.

Just for reference, the specific issue I ran into stems from using Chef to provision servers. Chef gets run as root but can perform the git commands as a different user on the system. The way this appears to be implemented is to fork, set the uid, and then execute git. But since the HOME environment variable is still set to /root, this leads to this fatal error. This can obviously be fixed on the script's end by properly determining and setting the HOME before executing git, but more care has to be taken, and I'm not sure how common this fork + set uid + exec approach in other programs might be. But I'll file a bug with Chef to get it fixed there.

Thanks again, Nick

← back to recent threads