[ I write this for I found the solution applied to my case at the 3rd link of the 2nd page of my Google search. I had never gone beyond the first page for years. ]

So there was this gitosis repository that lived on an Ubuntu server that had to move to a CentOS one.

Thankfully EPEL still carries gitosis and I did not built it from the source. I copied over the files and was done with it.

That is until I needed to change access to one of the repositories to add a user. Said user was denied any kind of access with:

ERROR:gitosis.serve.main:Repository read access denied

There are plenty of reasons for this occur (examples), but none seemed to fit in my case, so I brute forced the search results. And at the first comment that was posted on the third link at the second page Google came up with, the solution was found.

# cd ~gitosis/repositories/gitosis-admin.git/hooks/
# ls -l
total 48
-rwxr-xr-x 1 gitosis gitosis  452 Sep 11  2011 applypatch-msg.sample
-rwxr-xr-x 1 gitosis gitosis  896 Sep 11  2011 commit-msg.sample
-rwxr-xr-x 1 gitosis gitosis  160 Sep 11  2011 post-commit.sample
-rwxr-xr-x 1 gitosis gitosis  552 Sep 11  2011 post-receive.sample
lrwxrwxrwx 1 gitosis gitosis   61 Dec 21 09:53 post-update -> /usr/share/pyshared/gitosis/templates/admin/hooks/post-update
-rwxr-xr-x 1 gitosis gitosis  189 Sep 11  2011 post-update.sample
-rwxr-xr-x 1 gitosis gitosis  398 Sep 11  2011 pre-applypatch.sample
-rwxr-xr-x 1 gitosis gitosis 1578 Sep 11  2011 pre-commit.sample
-rwxr-xr-x 1 gitosis gitosis 4971 Sep 11  2011 pre-rebase.sample
-rwxr-xr-x 1 gitosis gitosis 1239 Sep 11  2011 prepare-commit-msg.sample
-rwxr-xr-x 1 gitosis gitosis 3611 Sep 11  2011 update.sample

Yeah, you’ve guessed it by now:


did not exist on CentOS but


did. Fixing the symbolic link fixed the problem.

/* Oh what fun it is to chase bugs into the night */