2016-11-21 152 views
0

我有一个git安装程序将我的网站部署到我的服务器(基于this guide)。然而,我面临以下问题:git push将文件组更改为nobody(501)

一切我git push我的大部分网站文件和文件夹的组所有者更改为nobody(501)。

下面是一个例子:

drwxrwxr-x 11 git www-data 4096 Nov 21 17:28 app 
-rw-r--r-- 1 git  501 1646 Nov 21 17:28 artisan 

如果我做chown -R git:www-data我做了git push之前,群主是www-data。但每次我git push,该组的所有者更改为501

我已经设置sharedRepository

git config core.sharedRepository group 
git config core.filemode false 

git是,现在删除组的一部分用户,但gitwww-data/etc/group的一部分:

www-data:x:502:git,nginx 

如何解决我的混帐设置为了让git保留我的所有文件和文件夹的www-data组?

+0

“用户git是现在已删除的组的一部分”,但您看到的是数字组501中的文件,而不是名称,我敢打赌它是git的组。你应该修正git的默认组为存在的东西。 – gilez

+0

是的,你是对的。 'usermod -g'命令解决了这个问题。 – Lee

回答

0

这是因为运行post-receive钩子的进程正在由您使用远程用户(即user @ hostname)的任何用户运行。它将按照其默认组创建文件,就像正常一样。

要解决此问题,您必须更改远程计算机上该用户的默认组。或者使用不同的用户。

一般来说,使用Git作为部署工具是一个坏主意。它严重抵制这个想法,而且非常有限。现在获得的任何小便利都将在不得不越来越多的情况下遭受损失。你最好使用真正的部署工具。

+0

您能否推荐一些我可以查看的部署工具? – Lee

+0

@Lee对不起,我不能。我没有使用部署工具。我刚刚看过很多人试图强制Git成为一个。 – Schwern