Report this

What is the reason for this report?

Permissions with Git Post-Receive

Posted on April 6, 2013

After following the Git tutorials, I have taken it a step further and created a ‘post-receive’ so that when I do a push to the live server it should then checkout to the virtual hosts directory of the website.

#!/bin/sh GIT_WORK_TREE=/var/www/domainname/public_html/ git checkout -f

However, when I try to do my push, it goes out the master successfully but I get permission denied errors when trying to create those files on my server web root.

e.g. remote: error: unable to create file index.php (Permission denied)

These errors actually make sense to me due to the way I have setup my server as per D.O.'s great how to articles. I disabled root access and created a new user that is added to the sudoers through visudo. Then setting up SSH keys for this user. I use this user for pushing out my git changes to the server.

The issue is, I believe, that this user that I connect to push doesn’t have the rights to write to the virtual hosts directory. All my files in these folders are owned by www-data (my nginx user) with the same group.

What is the solution? Create another user (SSH key) to connect with just for git that has higher permissions or is there a way to grant the post-receive sudo like abilities?

Apologies for the very long winded question but wanted to be absolutely clear with what I did.

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Start building today

From GPU-powered inference and Kubernetes to managed databases and storage, get everything you need to build, scale, and deploy intelligent applications.