it-swarm-id.com

Bagaimana cara mengatur kontrol akses di SVN?

Saya telah menyiapkan repositori menggunakan SVN dan proyek yang diunggah. Ada beberapa pengguna yang mengerjakan proyek ini. Tetapi, tidak semua orang membutuhkan akses ke semua proyek. Saya ingin mengatur izin pengguna untuk setiap proyek.

Bagaimana saya bisa mencapai ini?

79
user15425

Dalam folder svn\repos\YourRepo\conf Anda akan menemukan dua file, authz dan passwd. Ini adalah dua yang perlu Anda sesuaikan.

Dalam file passwd Anda perlu menambahkan beberapa nama pengguna dan kata sandi. Saya berasumsi Anda sudah melakukan ini karena Anda memiliki orang yang menggunakannya:

[users]
User1=password1
User2=password2

Maka Anda ingin memberikan izin yang sesuai dengan file authz:

Buat grup konseptual yang Anda inginkan, dan tambahkan orang ke dalamnya:

[groups]
allaccess = user1
someaccess = user2

Kemudian pilih akses apa yang mereka miliki dari tingkat perizinan dan proyek.

Jadi mari kita beri semua "akses semua" kepada kita semua akses dari root:

[/]
@allaccess = rw

Tapi hanya berikan "beberapa akses" kepada kami akses hanya baca untuk beberapa proyek tingkat bawah:

[/someproject]
@someaccess = r

Anda juga akan menemukan beberapa dokumentasi sederhana di file authz dan passwd.

82
Stephen Bailey

@Stephen Bailey

Untuk menyelesaikan jawaban Anda, Anda juga dapat mendelegasikan hak pengguna ke manajer proyek, melalui file teks biasa di repositori Anda.

Untuk melakukan itu, Anda mengatur database SVN Anda dengan file authz default yang berisi yang berikut:

###########################################################################
# 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

File authz default ini mengotorisasi administrator SVN untuk memodifikasi file teks polos yang terlihat dalam repositori SVN Anda, yang disebut '/ admin/acl_descriptions.txt', di mana administrator atau manajer proyek SVN akan memodifikasi dan mendaftarkan pengguna.

Kemudian Anda mengatur kait pra-komit yang akan mendeteksi jika revisi terdiri dari file itu (dan hanya file itu).

Jika ya, skrip kait ini akan memvalidasi konten file teks biasa Anda dan memeriksa apakah setiap baris sesuai dengan sintaks SVN.

Kemudian hook post-commit akan memperbarui file \conf\authz dengan concatenation of:

  • file TEMPLATE authz yang disajikan di atas
  • file teks biasa /admin/acl_descriptions.txt

Iterasi pertama dilakukan oleh administrator SVN, yang menambahkan:

[groups]
projadmins = zzzz

Dia melakukan modifikasinya, dan itu memperbarui file authz.

Kemudian manajer proyek 'zzzz' dapat menambah, menghapus, atau mendeklarasikan grup pengguna apa pun dan pengguna apa pun yang diinginkannya. Dia melakukan file dan file authz diperbarui.

Dengan begitu, administrator SVN tidak harus mengelola setiap dan semua pengguna secara individual untuk semua repositori SVN.

27
VonC

Satu gotcha yang menangkap saya:

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

tapi

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

Anda tidak perlu menyertakan garis miring pada direktori, atau Anda akan melihat 403 untuk permintaan OPSI.

26
Chris Burgess

Anda dapat menggunakan svn + ssh :, dan kemudian didasarkan pada kontrol akses ke repositori di lokasi yang diberikan.

Ini adalah bagaimana saya Host repositori grup proyek di uni saya, di mana saya tidak bisa mengatur apa pun. Hanya dengan memiliki direktori yang dimiliki grup, dan menjalankan svn-admin (atau apa pun itu) di sana berarti saya tidak perlu melakukan konfigurasi apa pun.

8

Meskipun saya akan menyarankan pendekatan Apache lebih baik, SVN Serve berfungsi dengan baik dan cukup mudah.

Dengan asumsi repositori Anda disebut "my_repo", dan disimpan dalam C:\svn_repos:

  1. Buat file yang disebut "passwd" di "C:\svn_repos\my_repo\conf". File ini akan terlihat seperti:

    [Users]
    username = password
    john = johns_password
    steve = steves_password
    
  2. Dalam C:\svn_repos\my_repo\conf\svnserve.conf set:

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

Ini akan memaksa pengguna untuk masuk untuk membaca atau menulis ke repositori ini.

Ikuti langkah-langkah ini untuk setiap repositori, hanya termasuk pengguna yang sesuai dalam file passwd untuk setiap repositori.

5
RB.

Cara terbaik adalah mengatur Apache dan mengatur akses melaluinya. Periksa svn book untuk bantuan. Jika Anda tidak ingin menggunakan Apache, Anda juga dapat melakukan kontrol akses minimalis menggunakan svnserve.

3