Saya memiliki beberapa repositori subversi yang dilayani melalui Apache 2.2 dan WebDAV. Mereka semua terletak di tempat sentral, dan saya menggunakan artikel debian-administration.org ini sebagai dasar (saya menjatuhkan penggunaan otentikasi database untuk file htpasswd sederhana sekalipun).
Sejak itu, saya juga mulai menggunakan WebSVN . Masalah saya adalah bahwa tidak semua pengguna pada sistem harus dapat mengakses repositori yang berbeda, dan pengaturan default WebSVN adalah untuk mengizinkan siapa saja yang dapat mengotentikasi.
Menurut dokumentasi WebSVN, cara terbaik untuk melakukannya adalah dengan menggunakan sistem akses jalur subversion, jadi saya mencari untuk membuatnya, menggunakan direktif AuthzSVNAccessFile.
Ketika saya melakukan ini, saya terus mendapatkan pesan "403 Terlarang".
File saya terlihat seperti berikut:
Saya memiliki pengaturan kebijakan default dalam file:
<Location /svn/>
DAV svn
SVNParentPath /var/lib/svn/repository
Order deny,allow
Deny from all
</Location>
Setiap repositori mendapatkan file kebijakan seperti di bawah ini:
<Location /svn/sysadmin/>
Include /var/lib/svn/conf/default_auth.conf
AuthName "Repository for sysadmin"
require user joebloggs jimsmith mickmurphy
</Location>
File default_auth.conf berisi ini:
SVNParentPath /var/lib/svn/repository
AuthType basic
AuthUserFile /var/lib/svn/conf/.dav_svn.passwd
AuthzSVNAccessFile /var/lib/svn/conf/svnaccess.conf
Saya tidak sepenuhnya yakin mengapa saya memerlukan SVNParentPath kedua di default_auth.conf, tapi saya baru saja menambahkannya hari ini karena saya mendapatkan pesan kesalahan sebagai akibat dari menambahkan direktif AuthzSVNAccessFile.
Dengan file akses yang benar-benar permisif
[/]
joebloggs = rw
sistem bekerja dengan baik (dan pada dasarnya tidak berubah), tetapi segera setelah saya mulai mencoba menambahkan segala jenis pembatasan seperti
[sysadmin:/]
joebloggs = rw
alih-alih, saya mendapatkan kembali kesalahan 'Izin ditolak'. Entri file log adalah:
[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
Apa yang harus saya lakukan agar ini berfungsi? Apakah konfigurasi apache salah, atau apakah pemahaman saya tentang file svnaccess.conf salah?
Jika saya melakukan hal ini dengan cara yang salah, saya tidak memiliki keterikatan khusus pada pendekatan keseluruhan saya, jadi jangan ragu untuk menawarkan alternatif juga.
UPDATE (20090528-1600):
Saya mencoba menerapkan jawaban ini , tetapi saya masih tidak bisa membuatnya berfungsi dengan baik.
Saya tahu sebagian besar konfigurasi sudah benar, seperti yang saya tambahkan
[/]
joebloggs = rw
di awal dan 'joebloggs' kemudian memiliki semua akses yang benar.
Ketika saya mencoba untuk pergi ke repositori-spesifik, melakukan sesuatu seperti
[/]
joebloggs = rw
[sysadmin:/]
mickmurphy = rw
kemudian saya mendapat izin ditolak kesalahan untuk mickmurphy (joebloggs masih berfungsi), dengan kesalahan yang mirip dengan apa yang sudah saya miliki sebelumnya
[Thu May 28 10:40:20 2009] [error] [client 89.100.219.180] Access denied: 'mickmurphy' GET svn:/sysadmin
Juga, saya lupa menjelaskan sebelumnya bahwa semua repositori saya ada di bawahnya
/var/lib/svn/repository
UPDATE (20090529-1245):
Masih tidak beruntung mendapatkan ini untuk bekerja, tetapi semua tanda-tanda tampaknya menunjuk ke masalah menjadi dengan kontrol jalur akses di subversi tidak berfungsi dengan baik. Asumsi saya adalah bahwa saya belum mengkonfigurasi apache atau svn untuk mengenali struktur repositori saya dengan benar.
Ini karena entri '[/]' tampaknya berfungsi dengan baik.
Itu juga terjadi pada saya bahwa ini adalah pertanyaan yang mungkin lebih baik di StackOverflow?
UPDATE (20090603-1740):
Menanggapi salah satu komentar untuk pertanyaan ini, pengaturan WebDAV saya untuk subversi itu sendiri diberikan lokasi / svn / repos tetapi websvn diatur ke / websvn.