как настроить контроль доступа в svn?

<p>я создал хранилище, используя svn и загруженные проекты. над этими проектами работают несколько пользователей. но не все работают над всеми проектами и требуют доступа. я хочу настроить разрешения для каждого из проектов с пользователями.</p><p>как мне этого добиться?</p>

<p>в вашей папке <strong>svn\repos\yourrepo\conf</strong> вы найдете два файла: <strong>authz</strong> и <strong>passwd</strong>. это те два, которые вам нужно отрегулировать.</p><p>в файле <strong>passwd</strong> вам нужно добавить несколько имен пользователей и паролей. я предполагаю, что вы уже сделали это, так как у вас есть люди, использующие это:</p><pre><code>[users] user1=password1 user2=password2 </code></pre><p>затем вы хотите назначить разрешения соответствующим образом с помощью файла <strong>authz</strong>:</p><p>создайте нужные вам концептуальные группы и добавьте в них людей:</p><pre><code>[groups] allaccess = user1 someaccess = user2 </code></pre><p>затем выберите доступ, который у них есть, как на уровне разрешений, так и на уровне проекта.</p><p>итак, давайте предоставим нашим парням "все права доступа" полный доступ из корня:</p><pre><code>[/] @allaccess = rw </code></pre><p>но только предоставьте нашим парням "некоторого доступа" доступ только для чтения к какому-либо проекту более низкого уровня:</p><pre><code>[/someproject] @someaccess = r </code></pre><p>вы также найдете несколько простых документов в файлах <strong>authz</strong> и <strong>passwd</strong>.</p>

<p>@ стефан бейли</p><p>чтобы завершить свой ответ, вы также можете делегировать права пользователя менеджеру проекта через обычный текстовый файл в вашем хранилище.</p><p>для этого вы настраиваете свою базу данных svn с файлом по умолчанию <code>authz</code>, содержащим следующее.</p><pre><code>########################################################################### # 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 </code></pre><p>этот файл <code>authz</code> по умолчанию разрешает администраторам svn изменять простой видимый текстовый файл в вашем хранилище svn, называемый <strong>'/ admin/acl\_description.txt'</strong>, в котором администраторы svn или менеджеры проектов будут изменять и регистрировать пользователи.</p><p>затем вы устанавливаете ловушку предварительной фиксации, которая будет определять, состоит ли ревизия из этого файла (и только этого файла).</p><p>если это так, сценарии этой ловушки будут проверять содержимое вашего простого текстового файла и проверять, соответствует ли каждая строка правильному синтаксису svn.</p><p>затем ловушка после фиксации обновит файл <code>\conf\authz</code> с <strong>сцепление</strong> из:</p><ul> <li>файл шаблон <code>authz</code>, представленный выше</li> <li>простой текстовый файл <code>/admin/acl\_descriptions.txt</code></li> </ul><p>первая итерация выполняется администратором svn, он добавляет:</p><pre><code>[groups] projadmins = zzzz </code></pre><p>он фиксирует свою модификацию, и она обновляет файл <code>authz</code>.</p><p>затем менеджер проекта zzzz может добавлять, удалять или объявлять любую группу пользователей и любых пользователей, которых он хочет. он фиксирует файл, и файл <code>authz</code> обновляется.</p><p><strong>таким образом, администратор svn не обязан следить за всеми пользователями всех хранилищ svn</strong>.</p>

<p>одна ошибка, которая поймала меня:</p><pre><code>[repos:/path/to/dir/] # this won't work </code></pre><p>но</p><pre><code>[repos:/path/to/dir] # this is right </code></pre><p>вам не нужно указывать косую черту в каталоге, иначе вы увидите 403 для запроса options.</p>

<p>вы можете использовать svn + ssh :, и тогда это основано на контроле доступа к хранилищу в указанном месте.</p><p>так я размещаю репозиторий групп проектов в своем uni, где я не могу ничего настроить. просто наличие каталога, которым владеет группа, и запуск там svn-admin (или чего бы то ни было) означает, что мне не нужно ничего настраивать.</p>

<p>хотя я бы посоветовал подход apache лучше, svn serve работает отлично и довольно просто.</p><p>предполагая, что ваш репозиторий называется "my\_repo", и он хранится в c:\svn\_repos:</p><ol> <li> <p>создайте файл с именем "passwd" в "c:\svn\_repos\my\_repo\conf". этот файл должен выглядеть так:</p> <pre><code>[users] username = password john = johns\_password steve = steves\_password </code></pre></li> <li> <p>в наборе c:\svn\_repos\my\_repo\conf\svnserve.conf</p> <pre><code>[general] password-db = passwd auth-access=read auth-access=write </code></pre></li> </ol><p>это заставит пользователей войти в систему для чтения или записи в этот репозиторий.</p><p>выполните следующие действия для каждого репозитория, включая только соответствующих пользователей в файле <code>passwd</code> для каждого репозитория.</p>

<p>лучший способ - настроить apache и настроить доступ через него. проверьте <a href="http://svnbook.red-bean.com/">svn book</a> для помощи. если вы не хотите использовать apache, вы также можете сделать минималистичный контроль доступа с помощью svnserve.</p>