我已经使用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服务应该有权访问系统身份验证文件?
提前多多感谢!
答案 0 :(得分:20)
确定!我做的!我觉得找到答案很难!
我们必须告诉Apache使用“外部身份验证提供程序”,Apache不会检查身份验证,但会将任务委派给外部身份验证器,在这种情况下,是奇妙的pwauth。
所以我采取的步骤是:
为Apache2和pwauth安装Mod_Auth_External模块
sudo apt-get install libapache2-mod-authnz-external pwauth
为Apache启用新模块:终端中的sudo a2enmod authnz_external
。
配置我的apache.conf
(或者您可能httpd.conf
)添加外部身份验证器(基于this article):
AddExternalAuth pwauth /usr/local/libexec/pwauth
SetExternalAuthMethod pwauth pipe
编辑我的/etc/apache2/mods-available/dav_svn.conf
以设置新的外部身份验证提供程序:
...
AuthType Basic
AuthName "Subversion Repository"
AuthBasicProvider external
AuthExternal pwauth
Require valid-user
...
经过测试并且工作正常!
答案 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