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

在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等可以共用。(仓库本身的文件访问权限是另外一回事)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章