標籤:expected controls
常有新手配置基於svnserve的subversion伺服器後,
在用戶端訪問subversion版本庫時出現這個錯誤:
svnserve.conf:12: Option expected
為什麼會出現這個錯誤呢,就是因為subversion讀取設定檔svnserve.conf時,無法識別有前置空格的設定檔,如
### This file controls the configuration of the svnserve daemon, if you
### use it to allow access to this repository. (If you only allow
### access through http: and/or file: URLs, then this file is
### irrelevant.)
### Visit http://subversion.tigris.org/ for more information.
[general]
### These options control access to the repository for unauthenticated
### and authenticated users. Valid values are "write", "read",
### and "none". The sample settings below are the defaults.
anon-access = read
auth-access = write
像上面的設定檔中,anon-access是頂行的,沒問題,而auth-access就存在前置空格,會導致這個錯誤。
要避免出現這個錯誤,應該在去掉這些行前的#時,也要順手去掉前面的空格,這一點,在鄭新星老早的文章《Subversion之路--實現精細的目錄存取權限控制》就提到過。
linux下搭建SVN遇到authentication failed問題的解決方案
我的系統為ubuntu server 12.04(其實只要是linux核心的,搭建步驟都差不多,至多有apt-get yum 或者源碼安裝的區別,這點大家不用擔心)(以下所有安裝步驟最好在root許可權下)
1.在終端中直接輸入 sudo apt-get install subversion,選擇安裝即可
2.(可選)看版本命令 svnserve --version。如果出現下面圖片,說明安裝成功
650) this.width=650;" alt="svn version資訊" src="http://img1.51cto.com/attachment/201207/094935574.jpg" border="0" height="120" width="160" />
3.添加svn系統管理使用者和subversion組(這步很重要,不然也會導致authentication錯誤)
sudo adduser svnuser(添加svnuser使用者)
sudo addgroup subversion(添加subversion組)
sudo addgroup svnuser subversion
4.開始建立項目目錄
sudo mkdir /home/svn (這裡的svn即為版本庫目錄檔案,以後所有的操作都在/home/svn下
cd /home/svn
mkdir one(這裡即為一個版本庫檔案,檔案名稱可以任意取)
chown -R root:subverison one
chmod -R g+rws one
5.建立SVN檔案倉庫,即為上面建立的one檔案目錄
svnadmin create /home/svn/one
到這一步,安裝基本完成,開始改配置。
6.在/home/svn/one檔案目錄中可以看到conf檔案夾,可針對conf檔案夾中的authz、passwd、svnserve.conf進行設定,svnserve.conf主要設定整體的安全性原則,passwd則設定使用者名稱和密碼,authz則是設定具體的使用者有什麼許可權。
7.存取權限設定
(1)編輯svnserve.conf檔案,編輯svnserve.conf檔案。
anon-access:匿名使用者的許可權,可以為read,write和none,預設值read。不允許匿名使用者存取:anon-access = none
auth-access:認證使用者的許可權,可以為read,write和none,預設值write。
password-db:密碼資料庫的路徑,去掉前邊的#
authz-db:認證規則庫的路徑,去掉前邊的#。
注意:這些配置項的行都要頂格,否則會報錯。修改配置後需要重啟svn才會生效。
(2)編輯passwd檔案,加入使用者名稱和密碼(如下為樣本)
這是每個使用者的密碼檔案,比較簡單,就是“使用者名稱=密碼”,採用的是明碼。如allen=1(apache模式下密碼為經過加密的變化)
[users]
allen = 1
ellen = 1
test = 1
(3)編輯authz檔案,配置使用者存取權限(如下為樣本)
1. [groups] section:為了便於管理,可以將一些使用者放到一個組裡邊,比如:owner=allen,ellen
2. groups下邊的sections表示對一個目錄的認證規則,比如對根目錄的認證規則的section為[/]。設定單使用者的認證規則時一個使用者一行,如:
[/]
allen=rw #allen對根目錄的許可權為rw
ellen=r #ellen對根目錄的許可權為r
如果使用group,需要在group名字前加@,如
@owner=rw #group owner中的使用者均為rw,等價於上邊的兩句話
啟動時如果從/home/svn/one啟動,/就是one目錄,用如上方式以one目錄為根設定許可權。
如果從/home/svn/啟動,每個倉庫根還是自己的起始目錄。可以採用如上方式設定astar的許可權,也可以採用如下方式:
[one:/]
@owner=rw
簡言之,每個倉庫的根目錄(/)就是自己的起始目錄;[repos:/]這種方式只適用於多倉庫的情況;[/]適合於單倉庫和單倉庫的方式。更多關於單倉庫和多倉庫的問題,請見 http://http://bbs.iusesvn.com/thread-157-1-1.html
8.啟動svn服務 svnserve -d -r -T /home/svn
描述說明:
-d 表示svnserver以“守護”進程模式運行
-T表示以線程模式運行,增加效率
-r 指定檔案系統的根位置(版本庫的根目錄),這樣用戶端不用輸入全路徑,就可以訪問版本庫。如: svn://你的IP/one
這個時候SVN就安裝完成了。
然後在WINDOW下面安裝用戶端tortoise SVN(可能這裡大家要問,為什麼用戶端要安裝在WINDOWS下面,因為畢竟很多程式員調試代碼都是在WINDOWS下面,而且查看代碼什麼的都是WINDOWS下面方便)。
9.這時候可以在用戶端用使用者名稱和密碼登陸使用了,這裡大家都會。
這個時候輸入密碼的時候就很有可能遇到authentication failed的提示。如所示:
650) this.width=650;" src="http://img1.51cto.com/attachment/201207/103532732.jpg" alt="authentication failed資訊" border="0" />
,讓我糾結了很久的一個問題
後來發現問題的原因是passwd檔案中所有行前面都不能有空格,如果有空格的話就會提示這個錯誤。
總之,大家在配置的過程一定要注意authz passwd svnserve.conf檔案所有行的前面都不能有空格;注意建立svn系統管理使用者和組;另外注意單倉庫和多倉庫許可權的配置問題和它們的訪問路徑問題。
這樣的話,基本上就可以正常地享受SVN之旅了。
svn eclipse /svnserve.conf:12: Option expected