Linux 无法同时存档Gitolite(Git)和nginx Web服务器访问Web空间
起点:Linux 无法同时存档Gitolite(Git)和nginx Web服务器访问Web空间,linux,git,nginx,permissions,gitolite,Linux,Git,Nginx,Permissions,Gitolite,起点: Ubuntu 20.04 Gitolite(/home/git/) Webspace/var/www/Webspace(通常由www-data拥有:www-data) Git用户(在www数据组中,也在组中未使用beeing的情况下尝试) 我想用post-receive将Web空间更新为git用户,并将其发送到www数据目录。在安装Gitolite之前,我已经将它存档了,但它似乎不像以前那样工作(或者我遗漏了一些东西)。为了说明这一点:post接收是在按下后执行的(通常不在Gitol
- Ubuntu 20.04
- Gitolite(/home/git/)
- Webspace/var/www/Webspace(通常由www-data拥有:www-data)
- Git用户(在www数据组中,也在组中未使用beeing的情况下尝试)
我试过的:
- chmod 777-R/var/www/webspace(在此之后git可以访问,但nginx返回403?)
- 将Git用户添加到www数据组
- chown www数据:git-R/var/www/webspace
- chown git:www-data-R/var/www/webspace
- chown git:git-R/var/www/webspace
- chown www data:www data-R/var/www/webspace(集团内部有无git)(有无777)
- 手动执行post接收(不允许操作)
- 以root用户身份手动执行post-receive(嗯……当然可以,但这不是重点)
- 。。。也许还有一些我可能错过的步骤
到目前为止,我注意到:
- 与Git相反,Gitolite使用-rw-----(如果我没记错的话)检查回购协议,这可能就是为什么它不使用Gitolite而是使用Git的原因
代码(不是说它很重要,只是列出所有内容):
- 后接
也许我只是错过了一些东西,但请帮助我。试着跟随“”,以便Gitolite调用相关的post接收挂钩
%rc
块中的rc
文件中添加这一行(如果它尚未出现),或者如果它已经出现并注释掉,则取消注释:
LOCAL_CODE => "$ENV{HOME}/local",
#登录服务器上的gitolite主机用户,然后:
cd$HOME
mkdir-p本地/挂钩/通用
cp您的post接收钩子本地/钩子/通用/post接收
chmod+x本地/挂钩/公用/立柱接收
gitolite安装程序
将钩子传播到现有的repo(在此之后创建的repo将获得它们)
logout
#or
exit
#or
CTRL+A+D
(如果要以该用户身份重新检查组登录,并键入“groups”以查看用户所在的组)
确保Web空间由正确的组拥有。对我来说:
sudo chown www-data:www-data -R /var/www/webspace
(如果您想重新检查,可以进入目录并键入“ls-g”)
在我的例子中,我不得不稍微修改一下我的“post-receive”,因为签出后权限总是-rw-----,所以这里是我的“post-receive”:
为了方便起见,我在repo目录(/home/git/repositories/repo/hooks/post-receive)中设置了“post-receive”。文档告诉您创建一个新文件夹(/home/git/local/specific hooks/repo/post receive(但他们告诉您自己命名)) *上述所有路径、名称、组和权限仅适用于我。它们可能因您的安装而异
什么真正解决了我的问题:
- 更改组后注销
- 接收后更改权限(chmod)
id>/tmp/id.txt
,然后您将在输出文件中看到进程的用户和组id对不起,但我认为您理解错误。这个职位工作得很好。正如我所写的->“为了说明这一点:post接收是在推送之后执行的(通常不是在Gitolite上执行的)……这也很难实现。”我的问题是让git和www数据读写相同的文件。@justsomexanda post接收不应该工作,除非你完全绕过Gitolite。我的答案是关于在Gitolite的contexte中注册post receive。我按照Gitolite文档上的说明通过特定的钩子运行post receive。不是我想要的答案。Post-receive正在工作。
logout
#or
exit
#or
CTRL+A+D
sudo chown www-data:www-data -R /var/www/webspace
#!/bin/sh
GIT_WORK_TREE=/var/www/webspace git checkout -f #default line to checkout
chmod -R a+r /var/www/webspace #added by me because of permission issues