搜尋

首頁  >  問答  >  主體

php - git這樣設定是否會有安全風險?

軟體版本

  1. CentOS 6.8

  2. PHP 7.0.7

  3. Git 1.7.1

環境配置

  1. 在目錄/home/work/repositories/下建立了一個裸倉test.git

  2. git clone到網站根目錄/home/work/www/

  3. PHP執行使用者為www-data/home/work/www/目錄的權限為755 ,屬於www-data用戶和www-data用戶群組

  4. #配置了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

問題描述

  1. 當完成上述配置的時候,開發環境執行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
  2. 依照網路上的教程,在/etc/sudoers裡面加了這行

    %git    ALL=(ALL)       NOPASSWD: ALL
  3. 依照這樣設定後,每次git push之後也會到/home/work/www/test目錄下執行git pull操作,達到了預期的效果。

想請教下大家,依照上面的配置,會不會有什麼安全風險或是配置方面的漏洞?
謝謝!

曾经蜡笔没有小新曾经蜡笔没有小新2786 天前652

全部回覆(2)我來回復

  • 伊谢尔伦

    伊谢尔伦2017-05-24 11:32:50

    個人覺得在生產伺服器放程式碼(包括 git 倉庫)是不大好的,尤其還放在 web 目錄裡面,一旦出現一些權限問題,很有可能程式碼被拖

    回覆
    0
  • 巴扎黑

    巴扎黑2017-05-24 11:32:50

    其實你可以把php的入口檔跟.git資料夾分開,這樣就可以了呀。
    像Laravel,入口文件在public裡,.git在public外面,這樣完全不會影響惹。

    回覆
    0
  • 取消回覆