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


83

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 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 của người dùng cho mỗi dự án.

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

Câu trả lời:


84

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

Trong passwd tập tin bạn cần phải 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ó những người sử dụng nó:

[users]
User1=password1
User2=password2

Sau đó, bạn muốn gán quyền tương ứng 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 nhóm đó:

[groups]
allaccess = user1
someaccess = user2

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

Vì vậy, hãy cung cấp cho những 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ừ gốc:

[/]
@allaccess = rw

Nhưng chỉ cấp cho những kẻ "một số quyền 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 tệp authzpasswd .


8
có liên quan trang hướng dẫn là: svnbook.red-bean.com/en/1.7/...
ErichBSchulz

1
Lưu ý: nó sẽ không làm việc nếu bạn truy cập vào kho lưu trữ trực tiếp qua ssh (không svnserve)
ALex_hha

Khi tôi đưa ví dụ một thư mục trong 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. Người dùng có thể thêm kho lưu trữ và chỉ các thư mục được gán cho anh ta mới được hiển thị cho anh ta không? Cảm ơn vi đa trả lơi .
maoanz

nhóm được gọi với @groupnameđiều này một chút tôi khi xác định các quy tắc, nó hoàn hảo trong các ví dụ của bạn, chỉ cần chỉ ra.
Wolfeh

28

@Stephen Bailey

Để hoàn thành câu trả lời của mình, 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 thuần túy 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 một authztệp mặc định có chứa các 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

authzTệp mặc định này cho phép 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 lưu trữ SVN của bạn, được gọi là '/admin/acl_descriptions.txt' , trong đó quản trị viên SVN hoặc người quản lý dự án sẽ sửa đổi và đăng ký người dùng.

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

Nếu đúng như vậy, tập lệnh của hook 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 SVN hay không.

Sau đó, một hook post-commit sẽ cập nhật \conf\authztệp với phần nối là:

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

Lần lặp đầu tiên được thực hiện bởi quản trị viên SVN, người cho biết thêm:

[groups]
projadmins = zzzz

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

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 ấy cam kết tệp và authztệp đượ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ỳ người dùng nào đối với tất cả các kho lưu trữ của SVN .


27

Một câu chuyện đã khiến tôi bị cuốn hút:

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

nhưng

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

Bạn không cần thêm dấu gạch chéo vào thư mục, nếu không bạn sẽ thấy 403 cho yêu cầu TÙY CHỌN.


8

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

Đây là cách tôi lưu trữ kho nhóm dự án tại đơn vị của mình, 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ì đó) 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.


Đây là một câu trả lời kinh khủng. Phương thức ssh này được ghi chép kém và dường như chỉ hoạt động cho Linux.
user1040323

Đơn giản là không đúng. Người ta chỉ cần chạy một daemon SSH trên máy chủ windows của họ và svn + ssh hoạt động cho Windows giống hệt như cho Linux. Có nhiều hướng dẫn giải thích cách chạy SSH trên máy windows.
Chuck Wolber

Ngoài ra, @ user1040323 thân mến, 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 đang sử dụng không phải là Linux, mà là một số biến thể BSD.
Matthew Schinckel

5

Mặc dù tôi sẽ đề xuất cách tiếp cận Apache tốt hơn, nhưng 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_repo" và nó được lưu trữ trong C: \ svn_repos:

  1. Tạo một tệp có tên "passwd" trong "C: \ svn_repos \ my_repo \ conf". Tệp này sẽ giống như sau:

    [Users]
    username = password
    john = johns_password
    steve = steves_password
    
  2. Trong C: \ svn_repos \ my_repo \ conf \ svnserve.conf, đặ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 passwdtệp cho mỗi kho lưu trữ.


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

3

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 sách svn để được giúp đỡ. Nếu 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 giản bằng svnserve.


0

Apache Subversion hỗ trợ ủy quyền dựa trên đường dẫn giúp bạn định cấu hình các quyền chi tiết cho tài khoản người dùng và nhóm trên các đường dẫn trong kho của bạn (tệp hoặc thư mục). Ủy quyền dựa trên đường dẫn hỗ trợ ba cấp độ truy cập - Không truy cập, Chỉ đọc và Đọc / Ghi.

Các quyền ủy quyền dựa trên đường dẫn được lưu trữ trong các tệp ủy quyền theo từng kho lưu trữ hoặc từng máy chủ với một cú pháp đặc biệt. Đây là một ví dụ từ SVNBook:

[calc:/branches/calc/bug-142]
harry = rw
sally = r

Khi bạn yêu cầu một cấu trúc quyền phức tạp với nhiều đường dẫn và tài khoản, bạn có thể hưởng lợi từ công cụ quản lý quyền dựa trên GUI do Máy chủ VisualSVN cung cấp:

  • Quản trị viên máy chủ có thể quản lý quyền của người dùng và nhóm thông qua bảng điều khiển VisualSVN Server Manager hoặc PowerShell,
  • Người dùng không phải quản trị viên có thể quản lý quyền thông qua RepoCfg.

Quyền kho lưu trữ trong VisualSVN Server Manager nhập mô tả hình ảnh ở đây

Quyền đối với kho lưu trữ trong PowerShell nhập mô tả hình ảnh ở đây

Người dùng không phải quản trị viên có thể quản lý quyền thông qua công cụ RepoCfg nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.