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等可以共用。(倉庫本身的文件訪問權限是另外一回事)

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