【发布时间】:2017-11-03 03:37:41
【问题描述】:
我想在 Ubuntu 上设置 GIT 和 Apache2,以便多个 Ubuntu/GIT 用户可以推/拉 Apache2 读取的文件。
我可以在 Ubuntu 上设置一个用户,该用户拥有自己的 GIT 存储库,他们可以使用 /home/user/.ssh/ 中的 SSH 私钥从自己的 /home/user/ 文件夹中推送/拉取GIT 服务器上的公钥(例如 bitbucket)。
但是,如果该用户被授予 sudo 权限并进入 Apache2 /var/www/html/ web 根目录,则他们不再有权通过 ssh 推送到 git(因为 git 正在寻找根的 id_rsa用户)。一种解决方法是为 root 用户设置一个 .ssh 密钥对以访问 GIT,但随后 GIT 提交不会被用户分隔(破坏了版本控制的主要目的之一)。
【问题讨论】:
-
最直接的可能是使文件组可写并将用户添加到该组。
-
我想知道您所说的“......但是 GIT 提交没有被用户分隔”是什么意思。将保存在修订版中的用户是“提交”(或作者)代码的用户,而不是“推送”且不依赖于传输的人。
-
@Adrian,谢谢。我将用户添加到 www-data 组,然后 chmod -R g+rwx
。用户在 repo 上,他们的公共 ssh 密钥在他们的个人资料上,但是来自他们的用户(不是 sudo)的 git push -u origin master 返回时拒绝访问存储库。致命:远端意外挂断。如果他们 sudo 进入,它会起作用。这是最佳做法,还是用户可以在其用户内部完成所有操作(无需 sudo)? -
@Edmundo,所以协作程序员通常从他们的用户内部进行所有提交(没有 sudo 权限),然后从 root 内部进行管理员推送,或者最好给每个程序员root权限?
-
虽然我没有任何通过 https 使用 with 的经验,但我确信可以设置它来验证用户身份,而无需在服务器上提供 root 访问权限。 git-scm.com/book/id/v2/Git-on-the-Server-The-Protocols
标签: git apache ubuntu ssh permissions