使用Git Pull保留组权限

3

我有一个由www-data拥有的用户组。每当我在cgi-bin目录下对服务器进行拉取时,修改后的文件会从www-data更改为root。

我想知道是否有一种方法可以在执行拉取后保持用户组权限不变的同时从git中拉取文件内容。

请给予建议。谢谢。


1
Git在用户和组所有权以及权限方面没有特殊处理,除了根据存储在仓库中的每个文件所列出的模式来设置或清除x位。这意味着您可以使用通常的系统配置项来配置这些内容。这些因操作系统而异,但Solaris和Linux都使用新文件的惯例是由创建文件的进程所拥有的组除非包含目录上设置了g+s(组粘滞)位。g+s位在创建子目录时被继承,因此只需在现有目录上设置它即可。 - torek
感谢您的回复。这是我最终采用的解决方案。我看到有人提到了git cache-meta,但实施步骤并不清晰。我对g+s唯一的担忧是它只保留组权限而不保留所有者。代码库是我继承的,可能已经将某些必须授予组的权限设置为所有者。我可能需要修改这些内容并相应地设置权限。 - Wayne Morris
1个回答

1
这是因为您正在以root身份进行拉取。您应该想要以拥有文件权限的用户意图进行拉取。当然,将凭据附加到您的www-data帐户上对于安全性来说并不好,因此您应该使用类似于github的部署密钥(可以拉取代码,但不能推送)等工具。 如果您想以www-data身份进行拉取,您可以使用“su - www-data”,但最初您会遇到问题,因为root已经拥有文件和git索引的某些部分。您需要使用“chown -R www-data:www-data /path/to/dir”命令使您打算使用的用户能够在拉取期间修改存储库和索引。
另外,您也可以根据评论中的建议使用粘滞位。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接