【问题标题】:Deploy git pull as the home dir user将 git pull 部署为主目录用户
【发布时间】:2014-10-23 07:29:51
【问题描述】:

我想知道是否可以为每个 克隆 git 存储库设置服务器用户和组。

例如,如果存储库在目录中:

/home/example/domains/example.com/public_html/

用户将是 example,组也将是 example。但是当我通过终端 clonepull(以 root 身份登录)时,文件将被保存为 root:root 而不是 示例:示例

在每次添加新文件时不必chown来防止这种情况发生的最佳方法是什么。

那么应该怎么办?

  1. 转到另一个用户cd /home/example/ 的目录,输入ls -all 可以看到,该目录中的所有文件都归用户示例和组示例所有。
  2. 转到 git 存储库或创建一个,在此示例中,我在 /home/example/domains/example.com/public_html/ 创建了一个。
  3. 在那里再次执行ls命令,你会注意到用户和组等于root:root,但我不希望它应该是example:example。

一个简单但手动的解决方案是。

chown -R example:example /home/example/domains/example.com/public_html/

只有我在寻找更动态的东西,它还必须与所有其他 git 命令(如 pull)一起使用,因为当您将新提交从存储库拉到本地时,它将归 root:root 所有。

【问题讨论】:

    标签: git web server


    【解决方案1】:

    使用sudo -u 切换到“示例”用户。您将希望在任何运行的钩子git pull 中执行此操作。如果git pull 没有运行任何钩子,我建议您阅读this guide on deploying using git

    Git 跟踪文件权限的可执行位,仅此而已。

    一般来说,您应该避免以 root 身份运行这样的事情:没有理由不以专用 git 用户(或示例用户)身份推送,并且有很多理由不以 root 身份推送。

    【讨论】:

      猜你喜欢
      • 2018-02-15
      • 2011-03-09
      • 2015-09-04
      • 2014-11-20
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多