Permissions
Git prime/hub 網站部署:documentroot 更改保存正常,但子目錄的權限被拒絕
按照以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
。