如何让Subversion使用Linux系统帐户进行​​身份验证?

时间:2010-12-23 22:31:30

标签: svn apache2 webdav

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

/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内部服务器错误。这是合乎逻辑的,为什么Web服务应该有权访问系统身份验证文件?

提前多多感谢!

3 个答案:

答案 0 :(得分:20)

确定!我做的!我觉得找到答案很难!

我们必须告诉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. 经过测试并且工作正常!

答案 1 :(得分:0)

您是否不能使用ssh访问subversion存储库而不是WebDAV?

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

答案 2 :(得分:0)

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

AddExternalAuth pwauth /usr/sbin/pwauth
SetExternalAuthMethod pwauth pipe

这可以方便地放在etc/apache2/conf.d

内的单独文件中