Linux SVN Server(Subversion) 配置解決授權失敗

環境

CentOS: 8, Subversion: 1.10.2

問題

首先通過svnadmin create myproject命令創建倉庫,然後在配置好passwd(用戶名、密碼),authz,svnserve.conf後,通過SVN客服端訪問,發現老是報認證失敗(但用戶名和密碼是對的,如果用戶名和密碼不對,在SVN客戶端則會反覆的彈出登錄對話框)。配置如下:

[root@srv1]# ls
branches  conf  db  format  hooks  locks  README.txt  tags  trunk

[groups]
develop = user1,user2,user3
release = user4,user5

 

[/trunk]
@develop = rw
 

[/branches]
@develop = r
@release = rw

在項目路徑還創建了trunk, branches, tags目錄,準備做主幹、分支,但通過http://[ip]/myproject/trunk訪問,總是認證失敗。

解決

經過多次的重試,發現了幾個問題:

1、在項目路徑建立的trunk,branches,tags目錄無效,SVN已不是使用直接的目錄映射關係,也就是說項目路徑和磁盤物理文件路徑並不存在直接的對應關係。實際上,SVN 的提交數據存儲在/[倉庫路徑]/db/revs目錄下

2、在還未引入前,authz中的[/trunk][/branches]授權配置是無效的,因爲/trunk和/branches這時還沒有(自建目錄無效),只有[/]授權配置纔是有效的,可讓SVN客戶端可以訪問根目錄。

下面是正確的配置:

[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
develop = user1,user2,user3
release = user4,user5

[/]
@develop = r
@release = r

[/trunk]
@develop = rw
#*=

[/branches]
@develop = r
@release = rw

附:

此外,還發現一個如何避免/trunk目錄被刪的配置方式:

[/]只讀,那麼引入的/trunk(注意不是在SVN服務器上創建文件夾,如前所述)一級目錄則不可刪除。

先給用戶賦予寫的權限,寫入後,然後再把所有用戶的寫權限去掉,也就是寫入前:

[/]
@develop = r
@release = rw

寫入後:

[/]
@develop = r
@release = r

修改後要通過命令:svnserve -d -r /home/svn/datadir 命令啓動。

這裏,/home/svn/datadir爲所建的SVN倉庫路徑。

 

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