【问题标题】:gitolite and file permissionsgitolite 和文件权限
【发布时间】:2012-04-12 12:22:46
【问题描述】:

我在 ubuntu 服务器上建立了一个 gitolite 存储库,旨在让开发人员克隆/推送我们将要处理的项目。我在回购中的接收后挂钩有问题。我在特定的 repo 中有一个 post-receive 挂钩,可以签出到服务器上的特定目录,在我的例子中是 /home/user/www/projects/。问题是当管理员推送一个repo(git push origin)时,钩子成功地将项目签出到指定的目录,并更改了正在签出的目录(项目)的权限。但是,如果普通用户推送到 repo,那么钩子会在不更改权限的情况下完整地检出项目。我已经在 0002 的服务器上检查了 umask,这不应该是这里的问题。我已卸载并重新安装了 gitolite,但仍然遇到同样的问题。

【问题讨论】:

    标签: git ubuntu gitolite


    【解决方案1】:

    如“Git CHMOD post-receive hook”中所述,与 Git 存储库本身相关的权限在这里可能很重要。

    在 Gitolite 中,该权限在 .gitolite.rc as $REPO_UMASK $UMASK 中配置(现在是 '$UMASK' 和 GitoliteV3 or'g3')。
    检查这是否会影响您的结帐问题:

    gitolite 使用的默认UMASK 使所有repos 及其内容具有rwx------ 权限。想要运行gitweb 的人意识到这是行不通的。

    处理这个问题的正确方法是给这个变量一个类似0027的值(注意语法:前导0是必需的),然后让用户运行webserver(apache,www-data,无论如何)'git' 组的成员。

    如果您已经安装了 gitolite,则必须手动修复现有文件(对于 umask0027,应为 chmod -R g+rX)。
    这是因为umask 只影响新创建文件的权限,而不影响现有文件的权限。

    【讨论】:

    • 感谢您澄清这一点。我将 .gitolite.rc 中的变量 $REPO_UMASK 更改为 0027。我注意到它将权限更改为 drwx-rx--- 所以我的猜测是 umask 值是错误的。我将研究正确的权限。感谢您的帮助!
    • @jmdesigner81 当然,如果 0027 不适合您,请尝试使用您的原始 umask 值 0002,作为 $REPO_MASK 值。
    • 谢谢!它奏效了,我很感激。我将在我的博客上写一篇关于将 gitolite 设置为设计师的文章。我是一名设计师。再次感谢! :)
    猜你喜欢
    • 2013-04-10
    • 1970-01-01
    • 2015-11-02
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多