Як налаштувати контроль доступу в SVN?


83

Я створив сховище за допомогою SVN та завантажив проекти. Над цими проектами працює кілька користувачів. Але не всі потребують доступу до всіх проектів. Я хочу встановити дозволи користувача для кожного проекту.

Як я можу цього досягти?

Відповіді:


84

У вашій папці svn \ repos \ YourRepo \ conf ви знайдете два файли, authz та passwd . Це два, які потрібно налаштувати.

У файлі passwd потрібно додати кілька імен користувачів та паролів. Припускаю, ви це вже зробили, оскільки у вас є люди, які цим користуються:

[users]
User1=password1
User2=password2

Потім вам потрібно призначити дозволи відповідно до файлу authz :

Створіть потрібні концептуальні групи та додайте до них людей:

[groups]
allaccess = user1
someaccess = user2

Потім виберіть, який доступ вони мають як з дозволів, так і з рівня проекту.

Отже, давайте нашим хлопцям "повний доступ" весь доступ з кореня:

[/]
@allaccess = rw

Але надайте нашим хлопцям доступ лише для читання до проекту нижчого рівня:

[/someproject]
@someaccess = r

Ви також знайдете деяку просту документацію у файлах authz та passwd .


8
відповідна сторінка посібника: svnbook.red-bean.com/en/1.7/…
ErichBSchulz

1
Примітка: це не буде працювати, якщо ви
звертаєтесь

Коли я передаю, наприклад, одну папку у сховищі користувачеві, користувач може отримати доступ до цієї папки лише за прямим посиланням. Чи можна для користувача додати сховище, і йому відображаються лише призначені йому папки? Дякую за відповідь .
maoanz

групи викликаються з @groupnameцим одним бітом мене при визначенні правил, це ідеально у ваших прикладах, просто вказуючи.
Wolfeh

28

@ Стівен Бейлі

Щоб завершити свою відповідь, ви також можете делегувати права користувача менеджеру проекту через звичайний текстовий файл у вашому сховищі.

Для цього ви налаштуєте базу даних SVN із authzфайлом за замовчуванням, що містить наступне:

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

Цей authzфайл за замовчуванням дозволяє адміністраторам SVN змінювати видимий текстовий файл у вашому сховищі SVN, який називається '/admin/acl_descriptions.txt' , в якому адміністратори SVN або менеджери проектів будуть змінювати та реєструвати користувачів.

Потім ви налаштовуєте гачок перед фіксацією, який визначатиме, чи ревізія складається з цього файлу (і лише цього файлу).

Якщо це так, сценарій цього хука перевірить вміст вашого простого текстового файлу та перевірить, чи відповідає кожен рядок синтаксису SVN.

Потім гачок після фіксації оновить \conf\authzфайл із об'єднанням :

  • authzфайл ШАБЛОНА, представлений вище
  • текстовий файл /admin/acl_descriptions.txt

Першу ітерацію робить адміністратор SVN, який додає:

[groups]
projadmins = zzzz

Він робить свою модифікацію, і це оновлює authzфайл.

Тоді менеджер проекту 'zzzz' може додавати, видаляти або оголошувати будь-яку групу користувачів та всіх бажаних користувачів. Він фіксує файл, і authzфайл оновлюється.

Таким чином, адміністратору SVN не потрібно самостійно керувати будь-якими та всіма користувачами для всіх сховищ SVN .


27

Одна помилка, яка мене зачепила:

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

але

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

Вам не потрібно включати кінцеву скісну риску в каталог, інакше ви побачите 403 для запиту OPTIONS.


8

Ви можете використовувати svn + ssh :, і тоді це базується на контролі доступу до сховища у вказаному місці.

Ось як я розміщую сховище груп проектів у своєму університеті, де я не можу налаштувати нічого іншого. Просто наявність каталогу, яким володіє група, та запуск там svn-admin (або якого б там не було) означає, що мені не потрібно було робити будь-яку конфігурацію.


Це жахлива відповідь. Цей метод ssh погано задокументований і, здається, працює лише для Linux.
user1040323

Просто неправда. Потрібно лише запустити демон SSH на їх сервері Windows, і svn + ssh працює для Windows точно так само, як і для Linux. Є багато підручників, які пояснюють, як запустити SSH на машині Windows.
Чак Волбер,

Крім того, шановний @ user1040323, є інші платформи, не пов'язані з Linux, окрім Windows: майже впевнений, що машина, на якій я був, була не Linux, а якийсь варіант BSD.
Метью Шінкель,

5

Хоча я б припустив, що підхід Apache кращий, SVN Serve працює нормально і досить просто.

Припускаючи, що ваше сховище називається "my_repo", і воно зберігається в C: \ svn_repos:

  1. Створіть файл із назвою "passwd" у "C: \ svn_repos \ my_repo \ conf". Цей файл повинен виглядати так:

    [Users]
    username = password
    john = johns_password
    steve = steves_password
    
  2. У C: \ svn_repos \ my_repo \ conf \ svnserve.conf встановлено:

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

Це змусить користувачів входити в систему для читання чи запису до цього сховища.

Виконайте ці кроки для кожного сховища, включаючи лише відповідних користувачів у passwdфайлі для кожного сховища.


Увага: Паролі зберігаються у відкритому тексті у файлі конф. SVN!
AVA

3

Найкращий спосіб - налаштувати Apache і встановити доступ через нього. Перегляньте допомогу у книзі svn . Якщо ви не хочете використовувати Apache, ви також можете зробити мінімалістичний контроль доступу за допомогою svnserve.


0

Apache Subversion підтримує авторизацію на основі шляхів, яка допомагає вам налаштувати детальні дозволи для облікових записів користувачів та груп на шляхах у ваших сховищах (файлах або каталогах). Авторизація на основі шляхів підтримує три рівні доступу - відсутність доступу, лише читання та читання / запис.

Дозволи авторизації на основі шляху зберігаються у файлах авторизації на кожне сховище або на сервер із спеціальним синтаксисом. Ось приклад із SVNBook:

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

Коли вам потрібна складна структура дозволів із багатьма шляхами та обліковими записами, ви можете скористатися засобами управління дозволами на основі графічного інтерфейсу, що надаються VisualSVN Server:

  • Адміністратори сервера можуть керувати дозволами користувачів та груп через консоль VisualSVN Server Manager або PowerShell,
  • Користувачі, які не є адміністраторами, можуть керувати дозволами через RepoCfg.

Дозволи сховища в VisualSVN Server Manager введіть тут опис зображення

Дозволи сховища в PowerShell введіть тут опис зображення

Користувачі, які не є адміністраторами, можуть керувати дозволами за допомогою інструмента RepoCfg введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.