【问题标题】:Chmod on Git Post-ReceiveGit Post-Receive 上的 Chmod
【发布时间】:2012-04-16 15:28:57
【问题描述】:

我刚刚获得了我的第一个 VPS,并设置了 NGinx、Ruby、Rails 和 Gitolite。

我可以很好地推拉。但是,一旦我在访问 URL 时推送,就会收到 403 forbidden 错误。本地文件是755,但似乎 Git 没有存储这些文件。

我发现了几篇讨论这个的帖子(包括这个:git deploying project - file permissions - (chmod)),答案似乎是在post-receive 钩子上添加一个CHMOD 755

我的post-receive 目前看起来像:

#!/bin/sh

GIT_WORK_TREE=/www/newrails git checkout -f
chmod 755 -R /www/newrails

我已经完成了chmod +x post-receive

但是,当我推送时,我得到了错误:remote: chmod: changing permissions of /www/newrails: Operation not permitted

我怎样才能让它工作,要么通过使挂钩中的chmod 具有运行权限,要么通过其他方式?

【问题讨论】:

    标签: git nginx gitolite


    【解决方案1】:

    尝试让chmod 对文件夹的内容而不是文件夹本身进行操作:

    chmod 755 -R /www/newrails/*
    

    可能发生的情况是,运行钩子的用户(通常是您用来 ssh 访问 Git 的用户)有权写入文件夹,但无权更改文件夹本身的模式。

    【讨论】:

    • 是的,就是这样!我不敢相信只需要额外的 1 个字符 :) 非常感谢。 (它不会让我再接受 9 分钟,但我会接受)。
    猜你喜欢
    • 2015-08-28
    • 2013-04-14
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    • 2014-06-02
    • 2014-09-05
    • 2013-07-17
    • 1970-01-01
    相关资源
    最近更新 更多