Я створив сховище за допомогою SVN та завантажив проекти. Над цими проектами працює кілька користувачів. Але не всі потребують доступу до всіх проектів. Я хочу встановити дозволи користувача для кожного проекту.
Як я можу цього досягти?
Я створив сховище за допомогою SVN та завантажив проекти. Над цими проектами працює кілька користувачів. Але не всі потребують доступу до всіх проектів. Я хочу встановити дозволи користувача для кожного проекту.
Як я можу цього досягти?
Відповіді:
У вашій папці 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 .
@groupname
цим одним бітом мене при визначенні правил, це ідеально у ваших прикладах, просто вказуючи.
@ Стівен Бейлі
Щоб завершити свою відповідь, ви також можете делегувати права користувача менеджеру проекту через звичайний текстовий файл у вашому сховищі.
Для цього ви налаштуєте базу даних 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 .
Одна помилка, яка мене зачепила:
[repos:/path/to/dir/] # this won't work
але
[repos:/path/to/dir] # this is right
Вам не потрібно включати кінцеву скісну риску в каталог, інакше ви побачите 403 для запиту OPTIONS.
Ви можете використовувати svn + ssh :, і тоді це базується на контролі доступу до сховища у вказаному місці.
Ось як я розміщую сховище груп проектів у своєму університеті, де я не можу налаштувати нічого іншого. Просто наявність каталогу, яким володіє група, та запуск там svn-admin (або якого б там не було) означає, що мені не потрібно було робити будь-яку конфігурацію.
Хоча я б припустив, що підхід Apache кращий, SVN Serve працює нормально і досить просто.
Припускаючи, що ваше сховище називається "my_repo", і воно зберігається в C: \ svn_repos:
Створіть файл із назвою "passwd" у "C: \ svn_repos \ my_repo \ conf". Цей файл повинен виглядати так:
[Users]
username = password
john = johns_password
steve = steves_password
У C: \ svn_repos \ my_repo \ conf \ svnserve.conf встановлено:
[general]
password-db = passwd
auth-access=read
auth-access=write
Це змусить користувачів входити в систему для читання чи запису до цього сховища.
Виконайте ці кроки для кожного сховища, включаючи лише відповідних користувачів у passwd
файлі для кожного сховища.
Найкращий спосіб - налаштувати Apache і встановити доступ через нього. Перегляньте допомогу у книзі svn . Якщо ви не хочете використовувати Apache, ви також можете зробити мінімалістичний контроль доступу за допомогою svnserve.
Apache Subversion підтримує авторизацію на основі шляхів, яка допомагає вам налаштувати детальні дозволи для облікових записів користувачів та груп на шляхах у ваших сховищах (файлах або каталогах). Авторизація на основі шляхів підтримує три рівні доступу - відсутність доступу, лише читання та читання / запис.
Дозволи авторизації на основі шляху зберігаються у файлах авторизації на кожне сховище або на сервер із спеціальним синтаксисом. Ось приклад із SVNBook:
[calc:/branches/calc/bug-142]
harry = rw
sally = r
Коли вам потрібна складна структура дозволів із багатьма шляхами та обліковими записами, ви можете скористатися засобами управління дозволами на основі графічного інтерфейсу, що надаються VisualSVN Server:
Дозволи сховища в VisualSVN Server Manager
Користувачі, які не є адміністраторами, можуть керувати дозволами за допомогою інструмента RepoCfg