Permissions

Git prime/hub 網站部署:documentroot 更改保存正常,但子目錄的權限被拒絕

  • April 12, 2013

按照以Web 為中心的 Git 工作流程中的說明,我在我的 Web 伺服器上設置了一個主要和集線器儲存庫,然後將集線器複製到我家的機器上。

我開始在 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

重申一下,在 root 中工作,在 subdir 中失敗。

感謝您的任何建議。

您需要添加一個包裝器以更正更新後掛鉤的權限。根據您的伺服器設置方式,涉及不同的步驟。我將描述我的案例,希望您可以根據自己的需要進行調整。

在我的伺服器中,裸儲存庫(集線器)由帶有 git-shell 的 gitosis/gitolite/plain git 使用者管理。下的文件歸umasked$GITOSIS_HOME擁有並被隱藏。gitosis:gitosis``077

為了正確提取更改,我需要添加對我儲存在其中的幫助腳本的呼叫,該腳本/usr/local/bin在主/實時儲存庫中遞歸地設置所有者、組、權限和 SELinux 上下文。

順便說一句,我還需要在我的sudoers(5)文件中添加一行,以允許gitosis以 root 身份使用!requiretty和執行腳本NOPASSWD

引用自:https://serverfault.com/questions/498792