2008-09-17 31 views
77

Tôi đã thiết lập một kho lưu trữ sử dụng SVN và các dự án đã tải lên. Có nhiều người dùng làm việc trên các dự án này. Tuy nhiên, không phải ai cũng đang làm việc trên tất cả các dự án và yêu cầu quyền truy cập. Tôi muốn thiết lập quyền cho từng dự án với người dùng.Làm thế nào để thiết lập kiểm soát truy cập trong SVN?

Làm cách nào để đạt được điều này?

Trả lời

3

Cách tốt nhất là thiết lập Apache và đặt quyền truy cập thông qua nó. Kiểm tra số svn book để được trợ giúp. Nếu bạn không muốn sử dụng Apache, bạn cũng có thể làm điều khiển truy cập tối giản bằng cách sử dụng svnserve.

82

Trong thư mục của bạn svn \ Repos \ YourRepo \ conf bạn sẽ tìm thấy hai tập tin, authzpasswd. Đây là hai bạn cần điều chỉnh.

Trong tệp passwd bạn cần thêm một số tên người dùng và mật khẩu. Tôi giả sử bạn đã làm điều này kể từ khi bạn có những người sử dụng nó:

[users] 
User1=password1 
User2=password2 

Sau đó, bạn muốn gán quyền phù hợp với authz file:

Tạo các nhóm khái niệm mà bạn muốn, và thêm người vào nó:

[groups] 
allaccess = user1 
someaccess = user2 

Sau đó chọn quyền truy cập nào họ có từ cả quyền và cấp dự án.

Vì vậy, hãy cung cấp cho "tất cả các truy cập" chàng trai của chúng tôi tất cả các truy cập từ gốc:

[/] 
@allaccess = rw 

Nhưng chỉ cung cấp cho "một số truy cập" chàng trai của chúng tôi chỉ đọc truy cập vào một số dự án cấp thấp hơn:

[/someproject] 
@someaccess = r 

Bạn cũng sẽ tìm thấy một số tài liệu đơn giản trong các tệp authzpasswd.

+7

trang hướng dẫn có liên quan là: http://svnbook.red-bean.com/en/1.7/svn.serverconfig.pathbasedauthz.html – ErichBSchulz

+0

Lưu ý: nó sẽ không hoạt động nếu bạn truy cập kho lưu trữ trực tiếp qua ssh (không có svnserve) –

+0

Khi tôi đưa ra ví dụ một thư mục dưới một kho lưu trữ cho người dùng, người dùng chỉ có thể truy cập thư mục này bằng liên kết trực tiếp. Có thể cho người dùng thêm kho lưu trữ và chỉ các thư mục được chỉ định cho anh ta được hiển thị cho anh ta không? Cảm ơn vi đa trả lơi . – maoanz

4

Mặc dù tôi đề nghị cách tiếp cận Apache tốt hơn, SVN Serve hoạt động tốt và khá đơn giản.

Giả sử kho của bạn được gọi là "my_repo", và nó được lưu trữ trong c: \ svn_repos:

  1. Tạo một tập tin gọi là "passwd" trong "C: \ svn_repos \ my_repo \ conf". Tập tin này sẽ giống như thế:

    [Users] 
    username = password 
    john = johns_password 
    steve = steves_password 
    
  2. Trong c: \ svn_repos \ my_repo \ conf \ svnserve.conf thiết

    [general] 
    password-db = passwd 
    auth-access=read 
    auth-access=write 
    

này sẽ buộc người dùng phải đăng nhập để đọc hoặc viết này kho.

Làm theo các bước sau cho mỗi kho lưu trữ, chỉ bao gồm người dùng thích hợp trong tệp passwd cho mỗi kho lưu trữ.

+0

Thận trọng: Mật khẩu được lưu trữ ở dạng văn bản thuần trong tệp conf SVN! – AVA

6

Bạn có thể sử dụng svn + ssh :, và sau đó dựa trên điều khiển truy cập vào kho lưu trữ tại vị trí đã cho.

Đây là cách tôi lưu trữ kho lưu trữ nhóm dự án tại Uni, nơi tôi không thể thiết lập bất kỳ thứ gì khác. Chỉ cần có một thư mục mà nhóm sở hữu, và chạy svn-admin (hoặc bất cứ điều gì nó đã được) trong đó có nghĩa là tôi không cần phải làm bất kỳ cấu hình.

+0

Đây là một câu trả lời kinh khủng. Phương pháp này ssh là tài liệu kém và dường như chỉ làm việc cho Linux. – user1040323

+0

Đơn giản là không đúng sự thật. Một trong những chỉ cần chạy một SSH daemon trên máy chủ cửa sổ của họ và svn + ssh hoạt động cho Windows chính xác giống như nó cho Linux. Có nhiều hướng dẫn giải thích cách chạy SSH trên máy tính Windows. –

+0

Ngoài ra, thân yêu @ user1040323, có những nền tảng không phải Linux khác ngoài Windows: khá chắc chắn rằng máy tôi đã có trên _wasn't_ Linux, nhưng một số biến thể BSD. –

26

@Stephen Bailey

Để hoàn thành câu trả lời của bạn, bạn cũng có thể ủy quyền người dùng để quản lý dự án, thông qua một tập tin văn bản đơn giản trong kho của bạn.

Để thực hiện việc đó, bạn thiết lập cơ sở dữ liệu SVN của mình bằng tệp mặc định authz có chứa thông tin sau.

########################################################################### 
# The content of this file always precedes the content of the 
# $REPOS/admin/acl_descriptions.txt file. 
# It describes the immutable permissions on main folders. 
########################################################################### 
[groups] 
svnadmins = xxx,yyy,.... 

[/] 
@svnadmins = rw 
* = r 
[/admin] 
@svnadmins = rw 
@projadmins = r 
* = 

[/admin/acl_descriptions.txt] 
@projadmins = rw 

mặc định này authz tập tin cho phép các quản trị viên SVN để sửa đổi một tập tin văn bản rõ ràng đơn giản trong kho SVN của bạn, được gọi là '/admin/acl_descriptions.txt', trong đó các quản trị viên SVN hoặc người quản lý dự án sẽ thay đổi và đăng ký người dùng.

Sau đó, bạn thiết lập móc trước cam kết sẽ phát hiện xem bản sửa đổi có bao gồm tệp đó không (và chỉ tệp đó).

Nếu có, tập lệnh móc này sẽ xác thực nội dung của tệp văn bản thuần túy của bạn và kiểm tra xem mỗi dòng có tuân thủ cú pháp đúng SVN hay không.

Sau đó, một cam kết nối sẽ cập nhật các tập tin \conf\authz với nối của:

  • các TEMPLATE authz tập tin trình bày ở trên
  • tập tin văn bản đơn giản /admin/acl_descriptions.txt

Đầu tiên Việc lặp lại được thực hiện bởi quản trị viên SVN, anh ta thêm:

[groups] 
projadmins = zzzz 

Anh ấy cam kết sửa đổi của mình và cập nhật tệp authz.

Sau đó, người quản lý dự án 'zzzz' có thể thêm, xóa hoặc khai báo bất kỳ nhóm người dùng nào và bất kỳ người dùng nào họ muốn. Anh ấy cam kết tệp và tệp authz được cập nhật.

Bằng cách đó, quản trị viên SVN không phải theo dõi bất kỳ và tất cả người dùng cho tất cả các kho lưu trữ SVN.

25

Một Gotcha mà bắt tôi ra:

[repos:/path/to/dir/] # this won't work 

nhưng

[repos:/path/to/dir] # this is right 

Bạn cần không bao gồm một dấu gạch chéo trên các thư mục, hoặc bạn sẽ thấy 403 cho yêu cầu OPTIONS.

+0

WTF, tôi đã không tìm kiếm này, nhưng nó đã được exaclty câu trả lời cho vấn đề của tôi = D – Fox32

Các vấn đề liên quan