Как предотвратить доступ пользователя Subversion к части хранилища? - PullRequest
9 голосов
/ 18 февраля 2009

Я использую хранилище Subversion, размещенное на Dreamhost для проекта.

Я хотел бы разрешить доступ некоторым пользователям на ограниченной основе. По крайней мере, я хотел бы разрешить доступ только для чтения некоторым пользователям, но в идеале я бы хотел, чтобы некоторые пользователи вообще не видели некоторые части хранилища. Я не могу найти разрешения пользователей, указанные в веб-документах для Subversion, хотя предполагаю, что они есть?

Я привык использовать Perforce, поэтому мне нужно то, что p4 protect делает для Perforce.

Спасибо.

Ответы [ 6 ]

12 голосов
/ 18 февраля 2009

Посмотрите на файл authz в каталоге conf /. Вы можете установить разрешения для конкретных пользователей и конкретных каталогов. В svnserve.conf вы можете указать, имеют ли анонимные пользователи доступ для чтения или нет.

Вот пример из моего хранилища:

[groups]
project1_team = dave, john, andy

[/]
* =
dave = rw

[/project1]
@project1_team = rw

[/project2]
andy = r

Здесь происходит то, что я определил группу пользователей, имеющих полный доступ к проекту1; Дэйв (который, как я), имеет полный доступ ко всему хранилищу, а у Энди доступ только для чтения к проекту 2.

3 голосов
/ 18 февраля 2009

На веб-хостах обычно есть файл конфигурации (который может называться как угодно) для запуска авторизации . Каждый репозиторий имеет список типа
[Мой-хранилище: /]
myuser = rw

Что даст «myuser» разрешение на чтение и запись для всего хранилища. Вы также можете сделать:

[мой-хранилище / только что это папка /:]
Somejerk: R

Что должно делать то, что вы хотите.

2 голосов
/ 20 июня 2012

Если вы используете SVN и Apache вместе, выполните следующую процедуру:

Имейте в виду, что наилучший уровень разрешений, которым вы можете управлять, будет для каждого хранилища. Предположим, у вас есть хранилище1 и хранилище2

1 - сделать соответствующих пользователей для каждого хранилища в отдельном файле:

sudo htpasswd -c -m /etc/apache2/dav_svn_REPOSITORY1.passwd $user_name_for_repository1
 sudo htpasswd -c -m /etc/apache2/dav_svn_REPOSITORY2.passwd $user_name_for_repository2

Если вы хотите добавить больше пользователей к каждому файлу, удалите -c из команды. потому что это просто для создания файла в первый раз.

2- Отредактируйте следующий файл:

nano /etc/apache2/mods-available/dav_svn.conf

у вас будет такой раздел:

<Location /svn>
  SVNPath $your svn repository path
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd
  Require valid-user
  SSLRequireSSL
</Location>

Скопируйте этот блок для каждого имеющегося у вас хранилища, в нашем случае вам понадобится еще один такой блок. Теперь избавьтесь от (удалите) вышеуказанного блока и добавьте следующий блок, который является измененными копиями вышеупомянутого:

<Location /svn/repository1>
  SVNPath $your svn repository1 path
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn_REPOSITORY1.passwd
  Require valid-user
  SSLRequireSSL
</Location>
<Location /svn/repository2>
  SVNPath $your svn repository2 path
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn_REPOSITORY2.passwd
  Require valid-user
  SSLRequireSSL
</Location>

3- Сохраните файл и перезапустите Apache.

0 голосов
/ 19 февраля 2009

См. Принятый ответ выше. Однако, для специфики Dreamhost, в каталоге ~ / svn есть два файла для каждого репозитория repo_name.access и repo_name.passwd. Где repo_name - это имя, которое вы дали вашему хранилищу. Вы можете редактировать файл repo_name.access, как описано в принятом ответе.

Не забудьте chmod 644 repo_name.access после того, как вы отредактируете его, чтобы apache мог получить к нему доступ.

0 голосов
/ 18 февраля 2009

Книга Subversion содержит ваш ответ прямо здесь .

Серьезно, люди: когда вышло из моды читать даже самые элементарные документы, прежде чем приставать к другим людям?

0 голосов
/ 18 февраля 2009

Я не знаком с конкретной конфигурацией, которую использует Dreamhost, но типичный способ применения разрешений - это использование механизмов аутентификации Apache. Вот соответствующая страница из документации Subversion.

...