【问题标题】:How to make Subversion use Linux system accounts for authentication?如何让 Subversion 使用 Linux 系统帐户进行​​身份验证?
【发布时间】:2011-05-30 04:56:47
【问题描述】:

我已经为 Subversion 设置了一个带有 Apache/WebDAV 接口的 Ubuntu 服务器,以便与其他开发人员共享存储库。我的问题是,如何让 Subversion 使用 linux 系统帐户进行​​身份验证?这将导致非常容易的 Subversion 帐户管理。 Subversion with Apache/WebDAV 当前正在使用此配置:

/etc/apache2/mods-available/dav_svn.conf的内容:

<Location /svn>
  DAV svn
  SVNParentPath /home/svn
  SVNListParentPath On
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd
  Require valid-user
</Location>

我尝试将AuthUserFile /etc/apache2/dav_svn.passwd 更改为AuthUserFile /etc/shadow,但没有成功。这使得服务器响应错误 500 internal server error。顺理成章,为什么 Web 服务应该有权访问系统身份验证文件?

提前非常感谢!

【问题讨论】:

  • @JW:谢谢!它没有答案,但它指向一个指向方向的良好链接。在我自己的回答中,我认为我让它变得更简单了。谢谢。

标签: svn apache2 webdav


【解决方案1】:

我还不能发表评论,但想补充一点,在 Ubuntu 12.04 中,pwauth 的路径已经改变,所以现在应该是

AddExternalAuth pwauth /usr/sbin/pwauth
SetExternalAuthMethod pwauth pipe

这可以方便地放在etc/apache2/conf.d内的单独文件中

【讨论】:

    【解决方案2】:

    好的!我做到了!而且我认为很难找到答案!

    我们必须告诉 Apache 使用“外部身份验证提供程序”,Apache 不会检查身份验证,但会将任务委托给外部身份验证器,在这种情况下,就是奇妙的 pwauth

    所以我为使其工作而采取的步骤是:

    1. 为 Apache2 和 pwauth 安装 Mod_Auth_External 模块

      sudo apt-get install libapache2-mod-authnz-external pwauth
      
    2. 在终端中为 Apache 启用了新模块:sudo a2enmod authnz_external

    3. 配置我的apache.conf(或者你可能有httpd.conf)添加外部验证器(基于this article):

      AddExternalAuth pwauth /usr/local/libexec/pwauth
      SetExternalAuthMethod pwauth pipe
      
    4. 编辑了我的/etc/apache2/mods-available/dav_svn.conf 以设置新的外部身份验证提供程序:

      ...
      AuthType Basic
      AuthName "Subversion Repository"
      AuthBasicProvider external
      AuthExternal pwauth
      Require valid-user
      ...
      
    5. 经过测试,运行良好!

    【讨论】:

    • 在我的服务器上出现了一个小问题,因为默认情况下 'pwauth' 安装到了不同的目录( /​​usr/sbin/pwauth )。因此,要么使用适当的路径修改上述第 3 点,要么 - 就像我在我的情况下所做的那样 - 只需添加一个 ''ln -s /usr/sbin/pwauth /usr/local/libexec/pwauth''。之后,一切都像魅力一样,谢谢!
    【解决方案3】:

    您不能使用 ssh 代替 WebDAV 来访问颠覆存储库吗?

    svn checkout svn+ssh://user@server:/home/svn/repository/trunk
    

    【讨论】:

    • 感谢您的回答。我已经配置了 WebDAV 风格的 SVN,主要是因为它是我知道并且可以配置的唯一方法,还因为它是我读过的推荐方法。我喜欢它在 WebDAV 上的工作方式,但我真的不知道它在 svn+ssh 上的表现如何。我目前已经找到了答案并发布了它。我仍然接受建议和cmets。谢谢!
    • 不需要配置太多。将用户添加到 svn 组。如果用户可以通过 ssh 访问服务器,他们也可以访问存储库。如果设置了公钥/私钥身份验证(每次提交时不输入密码),这会更好。
    • 这在 Linux 上运行良好,但 svn+ssh 对 Windows 开发者来说是个痛点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    • 2014-08-24
    • 2014-11-26
    • 2018-09-01
    相关资源
    最近更新 更多