2016-06-07 148 views
1

我有一个用户:www-data拥有的组。每当我对服务器(在cgi-bin目录中)执行pull操作时,修改后的文件都会从www-data更改为root。Git Pull保留组权限

我想知道是否有办法从git中提取文件的内容,同时在执行pull之后保持用户组权限不变。

请指教。谢谢。

+1

Git对用户和组的所有权和权限没有任何特别之处,除了根据存储在存储库中的每个文件列出的模式设置或清除“x”位。这意味着你可以使用通常的系统配置项来配置这些东西。这些因操作系统而异,但Solaris和Linux都使用约定,新文件由创建文件*的进程组拥有,除非*包含目录*上设置了g + s(group-sticky)位。 g + s位在创建子目录时被继承,因此只需将其设置到现有目录就足够了。 – torek

+0

感谢您的回复。这是我最终采取的解决方案。我看到有人提到git cache-meta,但实现它的步骤并不明确。我唯一关心的是g + s只保留组权限而不是所有者。代码库是我继承的,并且必须给予组的一些权限可能已经设置给所有者。我可能需要修改这些设置并相应地设置权限。 –

回答

1

这是因为你是以root身份进行提取。你会想要拉取用户打算拥有这些文件。当然,将凭据附加到您的帐户对于安全性来说并不是很好,所以您应该使用诸如github的部署密钥之类的东西(可以提取代码,但不能推送)。

如果你想拉www-data,你可以su - www-data,但最初你会遇到问题,因为root已经拥有文件和git索引的一部分。您将需要chown -R www-data:www-data /path/to/dir,以便您的预期用户可以在拉取期间修改回购和索引。

此外,您可以使用评论中建议的粘性位。