Git prime/hub 网站部署:documentroot 更改保存正常,但子目录的权限被拒绝

Git prime/hub 网站部署:documentroot 更改保存正常,但子目录的权限被拒绝

按照以 Web 为中心的 Git 工作流程我在我的网络服务器上设置了一个主要和中心存储库,然后将中心克隆到我家里的机器上。

我开始在 documentroot 中测试提交和推送更改的文件,更改在 Web 服务器的根目录中显示正常。但是,当我尝试推送子目录中的文件时,我收到了以下消息:

remote:
remote: **** Pulling changes into Prime [Hub's post-update hook]
remote:
remote: From /home/git/site_hub
remote:  * branch            master     -> FETCH_HEAD
remote: error: unable to create file academy/testthegit2.html (Permission denied)

再次,Web 根目录中没有权限问题,但将文件放在子目录中就会引发错误。

git用户在apache组中,子目录为chmod 755。

以下是该中心的更新后内容:

#!/bin/sh

echo
echo "**** Pulling changes into Prime [Hub's post-update hook]"
echo

cd /usr/local/apache/htdocs || exit
unset GIT_DIR
git pull hub master

exec git-update-server-info

以及主要(文档根目录)的更新后内容:

#!/bin/sh

echo
echo "**** pushing changes to Hub [Prime's post-commit hook]"
echo

git push hub

重申一下,在根目录中有效,在子目录中失败。

谢谢您的任何建议。

答案1

您需要添加包装器来更正更新后挂钩上的权限。根据您的服务器设置,涉及不同的步骤。我将描述我的用例,希望您可以根据自己的需求进行调整。

在我的服务器中,裸存储库(中心存储库)由 gitosis/gitolite/plain git 用户使用 git-shell 进行管理。下面的文件$GITOSIS_HOME归gitosis/gitolite/plain 所有gitosis:gitosis,并且是 umasked 的077

为了正确提取更改,我需要添加对我存储的辅助脚本的调用,/usr/local/bin该脚本在 prime/live 存储库中递归设置所有者、组、权限和 SELinux 上下文。

顺便说一句,我还需要在我的文件中添加一行sudoers(5)以允许以 root 身份使用和gitosis运行脚本。!requirettyNOPASSWD

相关内容