Apache-2.2
從 php 腳本執行 git pull
我正在嘗試使用 Git、GitHub 和 SSH 的 Perfect Workflow,但似乎我無法執行
git pull
。我試過git status
了,很好。當
git pull 2>&1
我得到:錯誤:無法打開 .git/FETCH_HEAD:權限被拒絕
我試圖將 .git dir chmod 到 777,但沒有運氣。
當我
whoami
從瀏覽器執行時,它顯示:apache
- 編輯 - -
我剛剛做了
chown apache:apache -R .git
,現在我得到了:無法創建目錄“/.ssh”。主機密鑰驗證失敗。致命:遠端意外掛斷
無法創建目錄“/.ssh”。主機密鑰驗證失敗。致命:遠端意外掛斷
閱讀並考慮您的錯誤資訊。主機密鑰儲存在 ~/.ssh/known_hosts 文件中。你的 Apache 使用者有“/”作為它的主目錄,它絕對沒有也不應該有對 root 的寫訪問權。
我建議您為此創建一個使用者帳戶……也許
gitpull-user
或什麼。確保它有一個可用的主目錄,即使它是非典型的。以該使用者身份登錄並創建一個 shell 腳本來完成您以該使用者身份嘗試執行的操作。當然,您還必須將適當的 id_rsa 密鑰複製到使用者的帳戶等。通過將此行添加到 /etc/sudoers 來配置 sudo 以啟動該腳本
apache ALL = (gitpull-user) NOPASSWD: /path/to/script.sh`
如果您遇到“無 TTY”問題:
Defaults:apache !requiretty
更改您的 PHP 腳本以呼叫
sudo -u gitpull-user ./script.sh
可以將 Apache 的主目錄更改為“真實”位置,然後將密鑰放在那裡,但這會帶來風險,即您的數據必須由 apache 擁有,並且如果守護程序受到破壞,則可以讀取密鑰. 建立第二個使用者提供了一定程度的隔離。