Tôi có nhiều kho lưu trữ lật đổ được phục vụ thông qua Apache 2.2 và WebDAV. Tất cả chúng đều nằm ở một vị trí trung tâm và tôi đã sử dụng bài viết debian-ad dùng.org này làm cơ sở (tôi đã bỏ việc sử dụng xác thực cơ sở dữ liệu cho một tệp htpasswd đơn giản).
Kể từ đó, tôi cũng đã bắt đầu sử dụng WebSVN . Vấn đề của tôi là không phải tất cả người dùng trên hệ thống đều có thể truy cập các kho lưu trữ khác nhau và thiết lập mặc định của WebSVN là cho phép bất kỳ ai có thể xác thực.
Theo tài liệu của WebSVN, cách tốt nhất để giải quyết vấn đề này là sử dụng hệ thống truy cập đường dẫn của subversion, vì vậy tôi đã tìm cách tạo nó, bằng cách sử dụng lệnh AuthzSVNAccessFile.
Khi tôi làm điều này, tôi tiếp tục nhận được tin nhắn "403 Bị cấm".
Các tập tin của tôi trông như sau:
Tôi có cài đặt chính sách mặc định trong một tệp:
<Location /svn/>
DAV svn
SVNParentPath /var/lib/svn/repository
Order deny,allow
Deny from all
</Location>
Mỗi kho lưu trữ có một tệp chính sách như dưới đây:
<Location /svn/sysadmin/>
Include /var/lib/svn/conf/default_auth.conf
AuthName "Repository for sysadmin"
require user joebloggs jimsmith mickmurphy
</Location>
Tệp default_auth.conf chứa nội dung này:
SVNParentPath /var/lib/svn/repository
AuthType basic
AuthUserFile /var/lib/svn/conf/.dav_svn.passwd
AuthzSVNAccessFile /var/lib/svn/conf/svnaccess.conf
Tôi không hoàn toàn chắc chắn lý do tại sao tôi cần SVNParentPath thứ hai trong default_auth.conf, nhưng tôi chỉ nói thêm rằng hôm nay tôi nhận được thông báo lỗi do thêm lệnh AuthzSVNAccessFile.
Với một tập tin truy cập hoàn toàn cho phép
[/]
joebloggs = rw
hệ thống hoạt động tốt (và về cơ bản là không thay đổi), nhưng ngay khi tôi bắt đầu cố gắng thêm bất kỳ loại hạn chế nào như
[sysadmin:/]
joebloggs = rw
thay vào đó, tôi lại nhận được lỗi 'Quyền bị từ chối'. Các mục nhật ký tệp là:
[Thu May 28 10:40:17 2009] [error] [client 89.100.219.180] Access denied: 'joebloggs' GET websvn:/
[Thu May 28 10:40:20 2009] [error] [client 89.100.219.180] Access denied: 'joebloggs' GET svn:/sysadmin
Tôi cần làm gì để làm việc này? Đã cấu hình apache sai, hoặc sự hiểu biết của tôi về tệp svnaccess.conf không chính xác?
Nếu tôi đi sai hướng này, tôi không có sự gắn bó đặc biệt nào với cách tiếp cận tổng thể của mình, vì vậy hãy thoải mái đưa ra các lựa chọn thay thế.
CẬP NHẬT (20090528-1600):
Tôi đã cố gắng thực hiện câu trả lời này , nhưng tôi vẫn không thể làm cho nó hoạt động đúng.
Tôi biết hầu hết các cấu hình là chính xác, như tôi đã thêm
[/]
joebloggs = rw
khi bắt đầu và 'joebloggs' sau đó có tất cả quyền truy cập chính xác.
Khi tôi cố gắng đi đến kho lưu trữ cụ thể, làm một cái gì đó như
[/]
joebloggs = rw
[sysadmin:/]
mickmurphy = rw
sau đó tôi đã nhận được quyền từ chối lỗi đối với mickmurphy (joebloggs vẫn hoạt động), với một lỗi tương tự như những gì tôi đã có trước đây
[Thu May 28 10:40:20 2009] [error] [client 89.100.219.180] Access denied: 'mickmurphy' GET svn:/sysadmin
Ngoài ra, tôi đã quên giải thích trước đó rằng tất cả các kho lưu trữ của tôi ở bên dưới
/var/lib/svn/repository
CẬP NHẬT (20090529-1245):
Vẫn không có may mắn để làm việc này, nhưng tất cả các dấu hiệu dường như đang chỉ ra vấn đề là với kiểm soát truy cập đường dẫn trong lật đổ không hoạt động đúng. Giả định của tôi là tôi chưa cấu hình apache hoặc svn để nhận dạng đúng cấu trúc kho lưu trữ của mình.
Điều này là do mục '[/]' dường như hoạt động hoàn hảo.
Nó cũng xảy ra với tôi rằng đây là câu hỏi có thể thuộc về StackOverflow tốt hơn?
CẬP NHẬT (20090603-1740):
Để trả lời một trong những ý kiến cho câu hỏi này, thiết lập WebDAV của tôi để lật đổ chính nó được cung cấp vị trí / svn / repos nhưng websvn được đặt thành / websvn.