使用Git Pull保留组权限

使用Git Pull保留组权限,git,Git,我有一个用户:www数据拥有的组。每当我拉入服务器(在cgi-bin目录中),修改后的文件就会从www-data更改为root 我想知道是否有一种方法可以从git中提取文件的内容,同时在执行提取后保持用户组权限不变 请告知。谢谢。这是因为你在拔根。您可能希望以用户想要拥有文件的身份进行拉取。当然,将凭据附加到您的www-data帐户对安全性不是很好,因此您可能应该使用类似github的部署密钥(可以拉代码,但不能推) 如果您想以www-data的身份提取数据,您可以su-www-data,但最初

我有一个用户:www数据拥有的组。每当我拉入服务器(在cgi-bin目录中),修改后的文件就会从www-data更改为root

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


请告知。谢谢。

这是因为你在拔根。您可能希望以用户想要拥有文件的身份进行拉取。当然,将凭据附加到您的
www-data
帐户对安全性不是很好,因此您可能应该使用类似github的部署密钥(可以拉代码,但不能推)

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


此外,您还可以使用注释中建议的粘性位。

Git对用户和组的所有权和权限没有任何特殊作用,只是根据存储在存储库中的每个文件列出的模式设置或清除
x
位。这意味着您可以使用常用的系统配置项来配置这些东西。这些操作系统各不相同,但Solaris和Linux都使用这样的约定,即新文件归创建文件的进程组所有,除非在包含目录上设置了g+s(组粘性)位。g+s位是在创建子目录时继承的,因此只需在现有目录上设置一次即可。感谢您的回复。这就是我最终采取的解决办法。我看到有人提到git cache meta,但实现它的步骤并不清楚。我唯一关心的是g+s只保留组权限,而不保留所有者。代码库是我继承的,组必须授予的某些权限可能已设置为所有者。我可能需要修改这些文件并相应地设置权限。