How to fix permission denied for .git/ directory when performing git push?

xylar picture xylar · Jun 12, 2011 · Viewed 36.2k times · Source

I have set up a git repository on my server. Created a new user 'git'. My repos are located in /srv/git/example.git. I was able to git remote add origin git@domain/srv/git/example.git then I added and committed my changes.

However when I tried git push origin master it failed on:

fatal: unable to create temporary file: permission denied' and 'fatal: sha1 file write error: invalid argument'

On the server I ran:

sudo chown -R git:git /srv/git/`

This fixed my problem but I am wondering if this was the correct thing to do?

Answer

user257111 picture user257111 · Jun 12, 2011

On the server I ran sudo chown -R git:git /srv/git/ - this fixed my problem but I am wondering if this was the correct thing to do?

Absolutely. The problem previously was that the git user, who you're logging in as via SSH, could not write to the repository.

Depending on your needs, you may consider different combinations of users and SSH keys, or one of the many additional programs (gitolite etc) that can be used to more finely control access.