素材牛VIP会员
git这样配置是否会有安全风险?
 二***了  分类:PHP代码  人气:885  回帖:2  发布于6年前 收藏

软件版本

  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操作,达到了预期的效果。

想请教下大家,按照上面的配置,会不会有什么安全风险或者配置方面的漏洞?
谢谢!

 标签:gitlinuxphp

讨论这个帖子(2)垃圾回帖将一律封号处理……

Lv5 码农
牛***满 产品经理 6年前#1

个人觉得在生产服务器放代码(包括 git 仓库)是不大好的,尤其还放在 web 目录里面,一旦出现一些权限问题,很有可能代码被拖

Lv6 码匠
你***饭 学生 6年前#2

其实你可以把php的入口文件和.git文件夹分开,这样就可以了呀。
像Laravel,入口文件在public里,.git在public外面,这样完全不会影响惹。

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取