我的 Linux(ubuntu)服务器上有很多 git 存储库。我使用 Apache 用户访问所有存储库www-data
。以前这种方法效果很好,因为我是唯一的 Web 开发人员。现在我有更多的开发人员,我需要限制他们对某些存储库的访问。我该如何修改我的服务器/权限/git 存储库以适应这种情况?
让我向您展示我当前设置存储库的过程。
为了在 myserver.com 上为项目设置新的存储库project
,我从终端发出以下命令:
ssh [email protected]
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 [email protected]
password: (password for project)
cd /var/www/project.myserver.com/public_html/
git init
git remote add origin http://[email protected]/project
git pull origin master
password: (password for www-data)
用户需要知道从 git 存储库推送和拉取的project
密码。www-data
我如何修改我的服务器/权限/gitrepositories,以便我可以推送和拉取而project
不是www-data
?
补充笔记
以下是 vhost 条目的git.myserver.com
样子
<VirtualHost 173.255.230.136:80>
ServerAdmin [email protected]
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
归用户所有。这样,apache 就可以通过 urlwww-data
中的符号链接写入 repos/var/www/git.myserver.com/public_html/project
http://[email protected]/project
答案1
首先,我会为 git 登录创建一个单独的用户。不过除此之外,管理此问题的最简单方法可能是使用类似 gitosis 的工具,这是一个简单的设置,允许您以细粒度的权限进行经过身份验证的 git 访问。
这将允许你向人们提供:
无访问权限、只读、读写等
http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way
NB 刚刚查看了开发者网站,里面还有更多功能。绝对值得一看https://github.com/sitaramc/gitolite/