2013-03-14 113 views
2

我正在嘗試使用svn只允許特定組訪問特定的文件。這些文件位於同一目錄級別的其他文件的隨機目錄中。SVN回購訪問控制問題

例子:

/branches/libraries/all_access_file.php 
/branches/libraries/some_access_file.php 
/branches/codebase/lots_of_private_files.php 
/branches/codebase/one_file_that_someone_can_see.php 

當我設置一個特定的文件權限如

[repo:/branches/librares/some_access_file.php] 
@admin = rw 
@devs = rw 
@some_guy = rw 

我預期的結果是看到SVN合作,任何人在「some_guy」組只得到一個文件。但他們得到禁止錯誤,因爲它們被隱另一個規則拒絕:

[repo:/branches] 
@admin = rw 
@devs = rw 

什麼是本質上拒絕訪問到整個倉庫除了一個文件(其目錄結構是完全隨機的,irrevelant)的正確方法?

回答

0

你真的在你的文件中有@rw嗎?如果是這樣,我不認爲這是有效的,可能會弄亂你的授權。

我也總是看到/完成這從父母到孩子......它可能是svn解析認證的順序,但我懷疑它。因此,您的文件可能如下所示:

[repo:/branches] 
@admin = rw 
@devs = rw 

[repo:/branches/librares/some_access_file.php] 
@some_guy = rw 

另外,您是否允許匿名訪問?如果你添加了

@some_guy = r到/ branches這是否允許你的組的用戶訪問/

最後,你可能想,作爲一個測試,用RW訪問文件中添加特定的用戶名..

thatguy = RW

,看看是否可行。它可能是你測試的用戶實際上不在some_guy組中?

請記住,即使用戶有權訪問它,也無法檢出(svn co)和單個文件。如果他們有權訪問,他們可能會導出單個文件。

爲了解決這個問題,如果可能的話重新組織你的項目,讓你想控制訪問的文件都在一個特定的文件夾中。這將允許用戶簽出該單個文件夾。

如果你只是想控制訪問某些文件,人們不會編輯svn不是你正在尋找的工具。使用cron作業運行某種類型的腳本,該腳本根據文件系統更新具有正確權限的共享文件夾。

+0

文件中沒有@。這是一個錯字。 我有這個文件就像你放在那裏,其中分支是some_access_file.php 沒有允許匿名訪問。 如果我添加@some_guy對/ branches的讀取訪問權限,那麼當我檢出repo時,它允許我拉取所有文件,而不是我想給**讀取**訪問的文件。我不想讓這個小組甚至能夠讀取任何文件,但只能讀取特定的文件。 這個人絕對是在小組中。無論是個人還是團體,問題都是一樣的。 – user2171332 2013-03-14 22:07:58

+0

那麼,你究竟想要做什麼?如果用戶只能訪問單個文件,我認爲您遇到問題,因爲您只能檢出文件夾,因此無法檢出單個文件。用戶將需要對包含文件夾的讀取權限才能檢出文件。 – PilotBob 2013-03-14 22:28:56

+0

我的希望是檢查項目,並且只允許某些文件可見,即使它們與不應該被看到的其他文件位於同一目錄級別。 – user2171332 2013-03-14 23:36:38