CentOS 6.8
PHP 7.0.7
Git 1.7.1
在目錄/home/work/repositories/
下建立了一個裸倉test.git
git clone
到網站根目錄/home/work/www/
PHP
執行使用者為www-data
,/home/work/www/
目錄的權限為755
,屬於www-data
用戶和www-data
用戶群組
#配置了post-receive
鉤子,開發環境執行git push
的時候,自動到/home/work/www/test
目錄下執行git pull
操作
#!/bin/sh cd /home/work/www/test sudo -u www-data env -i git pull
當完成上述配置的時候,開發環境執行git push
,出現瞭如下報錯
Counting objects: 3, done. Delta compression using up to 8 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 790 bytes | 0 bytes/s, done. Total 3 (delta 1), reused 0 (delta 0) remote: sudo: no tty present and no askpass program specified remote: Gogs: Internal error To ssh://xxx/test.git 6250615..3e4555d master -> master
依照網路上的教程,在/etc/sudoers
裡面加了這行
%git ALL=(ALL) NOPASSWD: ALL
依照這樣設定後,每次git push
之後也會到/home/work/www/test
目錄下執行git pull
操作,達到了預期的效果。
想請教下大家,依照上面的配置,會不會有什麼安全風險或是配置方面的漏洞?
謝謝!
個人覺得在生產伺服器放程式碼(包括 git 倉庫)是不大好的,尤其還放在 web 目錄裡面,一旦出現一些權限問題,很有可能程式碼被拖
其實你可以把php的入口檔跟.git資料夾分開,這樣就可以了呀。
像Laravel,入口文件在public裡,.git在public外面,這樣完全不會影響惹。