2010-06-24 113 views
1

我在我的主機帳戶上設置了SVN服務器。用戶可以簽入和簽出,但他們可以訪問我的整個存儲庫。SVN用戶組和權限

給人以訪問,我發出了用戶的公鑰到我的帳戶,然後我添加一行到我的〜/ .ssh裏面我「的authorized_keys」文件看起來像這樣:

command="/home/user/packages/bin/svnserve -t -r /home/user/repository --tunnel-user=diogo",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa [KEY DATA IN HERE]== [email protected] 

用戶可以然後從我的服務器通過隧道結帳如下:

svn+ssh://host.com/project/trunk 

我的問題是如何限制某些用戶訪問某些項目?

回答

1

您正在使用SSH隧道。如果我正確讀取svn book,則需要在存儲庫文件本身爲您登錄爲用戶設置權限,但你也可以直接在conf文件塊的用戶:

當在隧道運行,授權主要由操作系統對存儲庫數據庫文件的權限控制;這與Harry通過file:/// URL直接訪問存儲庫非常相似。

如果多個系統用戶將直接訪問存儲庫,您可能希望將它們放入一個公共組中,並且您需要小心umasks。 (請務必閱讀「支持多種版本庫訪問方法」一節。)

但即使在隧道的情況下,仍然可以使用svnserve.conf文件來阻止訪問,只需設置auth-access = read或auth-access = none。

(摘自「SSH認證和授權」)

順便說一句,你說你是在你的託管帳戶這樣做。我曾經嘗試過,但不得不放棄,因爲我不允許添加新的SSH用戶。如果您無法添加SSH用戶帳戶,則無法通過隧道進行細粒度的身份驗證 - 用戶始終可以完全訪問回購站。

要獨立於SSH使用多用戶認證,您必須將svn與Apache集成,這在共享環境中通常是不可能的。

我最終切換到了一個基於Windows的小型虛擬服務器,並在那裏安裝了Brain-dead easy svn wrapper VisualSVN Server。這需要花費一些錢(大約20歐元/月,我已經看到基於Linux的虛擬服務器起價10美元),但從那以後我一直很滿意。 (當然,你可以使用Linux並使用Apache設置svn,這也是VisualSVN在內部也是這樣做的。)

+0

我的託管帳戶是通過hostmonster進行的,所以他們只提供單一用戶登錄,因此我無法登錄設置文件的用戶權限,因爲只有一個用戶。有沒有其他方式,或者可能添加新用戶的方式?謝謝 – Martin 2010-06-24 09:39:14

+0

@馬丁嘿,真是巧合:)看看我的更新。 – 2010-06-24 09:40:50

+0

@Martin如果你的提供者不允許你,我認爲沒有辦法添加新用戶。這些是系統級別的用戶帳戶。 – 2010-06-24 09:43:46