На моем сервере я размещаю несколько репозиториев git через gitolite, и у меня есть трассировка для каждого репозитория.
У меня есть пользователь с именем git, который отправляет / извлекает с сервера (git clone git@server:repo
). а trac - это vhost apache с mod_wsgi. это работает с пользователем www-data.
Что меня озадачивает (возможно, потому, что я вообще не имею представления о разрешениях для файлов), так это то, как лучше всего настроить разрешения (chown, chmod) для репозиториев git (/home/git/repositories/
...).
www-data (или trac) нужно, по крайней мере, читать разрешения (я думаю). и git (или gitolite), очевидно, нужны разрешения на чтение / запись для отправки наборов изменений.
Я попробовал немного (т.е. добавить www-data и / или git в группу www-data / git), но не понял. по крайней мере, один из двух не работает (git или trac).
любые предложения приветствуются.
Я бы сказал, что наиболее безопасный способ сделать это - создать группу под названием git-reader.
добавьте к нему git и www-data, а затем получите следующую структуру папок:
/home/git - git:git-readers u=rwx,g=rx,o=
/home/git/repositories - git:git u=rwx,g=rwx,o=rx
Это позволит www-данным находиться в папке для чтения, но предоставит доступ на запись только пользователю git. Ни один другой пользователь ничего не может сделать.
Если вы хотите добавить дополнительных писателей, я бы добавил еще одну группу git -writers и добавил в нее пользователей и git, а также группу git-reader, а затем использовал следующую структуру:
/home/git - git:git-readers u=rwx,g=rx,o=
/home/git/repositories - git:git-writers u=rwx,g=rwxs,o=rx
Обратите внимание на "s" в разрешениях группы. Это заставляет пользователей-писателей использовать группу git -writers в качестве группы по умолчанию. Это будет работать правильно, только если все писатели - umask 0002.