it-swarm-vi.tech

Làm cách nào để thiết lập kiểm soát truy cập trong SVN?

Tôi đã thiết lập một kho lưu trữ bằng SVN và các dự án được tải lên. Có nhiều người dùng làm việc trên các dự án này. Nhưng, không phải ai cũng yêu cầu quyền truy cập vào tất cả các dự án. Tôi muốn thiết lập quyền người dùng cho từng dự án.

Làm thế nào tôi có thể đạt được điều này?

79
user15425

Trong thư mục svn\repos\YourRepo\conf của bạn, bạn sẽ tìm thấy hai tệp, 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 vì bạn có người sử dụng nó:

[users]
User1=password1
User2=password2

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

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

[groups]
allaccess = user1
someaccess = user2

Sau đó chọn những gì họ có quyền truy cập từ cả quyền và cấp dự án.

Vì vậy, hãy cho mọi người "tất cả quyền truy cập" của chúng tôi tất cả quyền truy cập từ thư mục gốc:

[/]
@allaccess = rw

Nhưng chỉ cung cấp cho những người "truy cập" của chúng tôi quyền truy cập chỉ đọc 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.

82
Stephen Bailey

@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 cho người quản lý dự án, thông qua một tệp văn bản đơn giản trong kho lưu trữ của bạn.

Để làm điều đó, bạn thiết lập cơ sở dữ liệu SVN của mình với tệp authz mặc định chứa các mục 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

Tệp authz mặc định này ủy quyền cho quản trị viên SVN sửa đổi tệp văn bản thuần có thể nhìn thấy trong kho SVN của bạn, được gọi là '/ admin/acl_descrip.txt', trong đó các quản trị viên hoặc quản lý dự án SVN sẽ sửa đổi và đăng ký người dùng.

Sau đó, bạn thiết lập một hook pre-commit 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 đúng như vậy, tập lệnh của hook này sẽ xác nhận 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 SVN không.

Sau đó, hook post-commit sẽ cập nhật tệp \conf\authz với concatenation of:

  • tệp TEMPLATE authz được trình bày ở trên
  • tệp văn bản thuần túy /admin/acl_descriptions.txt

Lặp lại đầu tiên được thực hiện bởi quản trị viên SVN, người bổ sung:

[groups]
projadmins = zzzz

Anh ta cam kết sửa đổi 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 anh ta muốn. Anh ta xác nhận 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 quản lý riêng lẻ bất kỳ và tất cả người dùng cho tất cả các kho lưu trữ SVN.

27
VonC

Một gotcha khiến tôi bị loại:

[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 dấu gạch chéo trên thư mục hoặc bạn sẽ thấy 403 cho yêu cầu TÙY CHỌN.

26
Chris Burgess

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

Đây là cách tôi Lưu trữ một kho lưu trữ nhóm dự án tại trường đại học của tôi, nơi tôi không thể thiết lập bất cứ điều 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ứ thứ gì) trong đó có nghĩa là tôi không cần phải thực hiện bất kỳ cấu hình nào.

8
Matthew Schinckel

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

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

  1. Tạo một tệp có tên là "passwd" trong "C:\svn_Vpose\my numpo\conf". Tập tin này sẽ giống như:

    [Users]
    username = password
    john = johns_password
    steve = steves_password
    
  2. Trong C:\svn_Vpose\my_Vpo\conf\svnserve.conf được đặt:

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

Điều này sẽ buộc người dùng đăng nhập để đọc hoặc ghi vào kho lưu trữ này.

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

5
RB.

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

3
Mladen Mihajlovic