我正在与朋友共享一个git存储库。他使用我的机器的SSH服务器(共享的git存储库)从git存储库中推入并拉到他的git存储库。
问题是,当他推动提交时,我无法拉,因为提交是janito users rwx------ (这些是权限元数据)。
我创建了一个名为git的组,添加了他和我自己,存储库是jpmelos git rwxrwx---。如何将存储库目录中创建的文件也强制为<creator> git rwxrwx---,这样我们就可以随时拉和推而不用担心权限问题了?
当然,你也可以对问题提出更好的解决方案。限制是,我们需要在我的机器上使用SSH (我们还没有准备好将代码公开),而且我们已经在推举和提取我单独创建的一个与我的工作存储库分开的存储库。
谢谢!
发布于 2011-11-19 19:43:46
你朋友的假面具设置是什么?让他在你服务器上的命令提示符下输入umask,看看会发生什么。如果它读取0077 (或077),这可能是问题所在,因为这意味着“在创建文件时,清除组或其他权限位”。
一个更合适的umask是0027,它将允许对创建的文件进行组读取和执行权限。他可以通过运行umask 0027临时设置它,或者将它永久地添加到他的~/.profile或~/.bash_profile中。
发布于 2011-11-20 00:19:50
我认为这可以通过编写一个定制脚本作为Git钩子来实现--只要每个克隆Git的人都能使用它,任何脚本语言都可以做到。阅读有关Git钩子在专业Git.
发布于 2011-11-20 06:30:21
您可能应该查看一下湿疣。
在此系统下,将创建一个特殊的git帐户来存放所有存储库。作为gitosis,您只需添加用户的ssh公钥,以便授予访问权限。您的git urls最终看起来如下所示:
ssh://git@myserver/my-repo.git
所有用户都使用git用户帐户进行连接,但是它是安全的,因为不允许shell访问。相反,所有的访问都必须经过gitosis,这可以以一种可配置的方式规范和保护对单个git存储库的访问。您的权限问题不会出现,因为只有单个git用户实际与文件系统交互。
https://unix.stackexchange.com/questions/24951
复制相似问题