Subversion配置http访问的1个注意点

本文探讨了在CentOS服务器上配置SVN时,如何解决SVN协议与HTTP协议下用户认证不一致的问题。详细解释了SVN的passwd文件与httpd模块所需的AuthUserFile格式差异,以及如何通过正确配置实现两者的无缝对接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在CentOS服务器上配有一个SVN,环境中有SVN自有协议和HTTP协议配置了同时访问,
SVN协议下的控制是大家都了解的passwd(配置用户信息)和authz(配置组信息和访问权限)文件,
HTTP则使用LDAP来访问用户信息。

因为LDAP管理略有不便,所以打算将HTTP切换成和SVN的passwd的相同用户表。
但是却总是无法成功,总是反复提示重新填写帐号,apache的日志里则提示Not found xxxx User错误。

经过数小时才发现,是一个简单却容易麻痹的问题引起的。
最初httpd下使用配置文件如下,用户文件和权限控制文件都直接指向SVN本身的文件,看起来没有什么问题。

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

<Location /svn>
    DAV svn
    SVNParentPath /data/svn/
    AuthType Basic
    AuthName "Subversion User"
    AuthUserFile /data/svn/passwd
    AuthzSVNAccessFile /data/svn/authz
    Require valid-user
</Location>

问题出在passwd文件上,SVN自身控制的passwd文件格式是如下这样以等号分隔:

user1=1
user2=1

但是,httpd的svn模块所要的passwd文件(AuthUserFile),其格式是用冒号分隔,且不允许直接使用明文,
(一般用htpasswd命令生成),如下:

user1:HjkY1IjiKmJw.
user2:sLWo8TMiVEA6o

格式不对,自然会出现找不到用户的现象,用htpasswd新建AuthUserFile文件后后一切正常。

但与此同时,authz的格式则是完全通用的,这一点最是让人迷惑(原来用ldap发现不了这个问题)。
passwd文件不同,从这个意义上来说svn协议访问和http访问其实是并无关联的2套体系,
只不过部分配置如authz等可以共用。(仓库本身的文件访问权限是另外一回事)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值