У меня много репозиториев git на моем сервере Linux (ubuntu). Я получаю доступ ко всем из них с пользователем Apache www-data
. Раньше это отлично работало, потому что я был единственным веб-разработчиком. Теперь у меня больше разработчиков, и мне нужно ограничить их доступ к некоторым репозиториям. Как мне изменить мои репозитории server / permissions / git, чтобы приспособить это?
Позвольте мне показать вам текущий процесс, через который я создаю репозиторий.
Чтобы создать новый репозиторий для проекта project
на myserver.com я запускаю с терминала следующие команды:
ssh www-data@myserver.com
password: (password for www-data)
cd /var/lib/repositories/
mkdir project.git
cd project.git
git init --bare
git update-server-info
cd /var/www/git.myserver.com/
ln -s /var/lib/repositories/project.git project
Развернуть проект по url http://project.myserver.com
, Я запускаю следующие команды из терминала:
ssh project@myserver.com
password: (password for project)
cd /var/www/project.myserver.com/public_html/
git init
git remote add origin http://www-data@git.myserver.com/project
git pull origin master
password: (password for www-data)
Пользователь project
необходимо знать пароль для www-data
нажимать и извлекать из репозитория git.
Как мне изменить свой сервер / разрешения / gitrepositories, чтобы я мог нажимать и тянуть как project
вместо того www-data
?
Дополнительные замечания
Вот для чего нужна запись vhost git.myserver.com
выглядит как
<VirtualHost 173.255.230.136:80>
ServerAdmin support@myserver.com
ServerName git.myserver.com
DocumentRoot /var/www/git.myserver.com/public_html/
ErrorLog /var/www/git.myserver.com/logs/error.log
CustomLog /var/www/git.myserver.com/logs/access.log combined
</VirtualHost>
Каталог /var/lib/git
принадлежит www-data
пользователь. Таким образом, apache может писать в репозитории через символическую ссылку в /var/www/git.myserver.com/public_html/project
через URL http://www-data@git.evermight.com/project
Сначала я бы создал отдельного пользователя для входа в git. Однако, помимо этого, вероятно, самый простой способ справиться с этим - использовать что-то вроде gitosis, который представляет собой простую настройку, которая позволяет вам выполнять аутентифицированный доступ к git с детальными разрешениями.
Это позволит вам дать людям:
Нет доступа, только чтение, чтение и запись. И т.д
http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way
N.B. только что проверил сайт разработчиков, и в этом есть больше возможностей. На что стоит посмотреть https://github.com/sitaramc/gitolite/