Настройка пользователя только для чтения для SVN-Apache - PullRequest
6 голосов
/ 15 февраля 2012

Я следовал инструкциям, изложенным в книге под названием «Управление версиями с помощью Subversion», относительно правильного способа настройки конфигурации SVN на основе Apache. Пока что у меня есть файл "subversion.conf" в моем каталоге /etc/httpd/conf.d. В этом файле я определил местоположение с именем "/ svn" и сопоставил его с местоположением моих репозиториев Subversion "/ x1 / svn / (repo1), (repo2), (etc)". Я также создал пользователя "svn", который владеет областью репозитория и добавил групповые разрешения для Apache, так что репозитории доступны из Apache без необходимости настройки всего, что принадлежит Apache (что я считаю странным способом сделать это). вещи).

В любом случае. Вот проблема, с которой у меня проблемы. Я хотел бы настроить пользователя «а», которого я мог бы раздавать людям в том случае, если я хочу разрешить им загружать копию исходного кода конкретной базы кода репозитория. Здесь есть несколько уровней сложности.

  1. А) разрешить им обычного пользователя, который предоставляет доступ только для чтения ко всем хранилищам
  2. B) предоставить определенных пользователей «только для чтения» для определенных репозиториев

В любом случае, и я думаю, что было бы проще объяснить, как выполнить опцию (A), как я могу это сделать, учитывая конфигурацию, которую я настроил для своего веб-сервера в настоящее время? Ниже приведена копия моего файла «subversion.conf», который работает просто отлично, однако требует, чтобы любой пользователь, обращающийся к нужным репозиториям, имел полный доступ:

   <Location /svn>
   DAV svn
   SVNParentPath /x1/svn

   # Require SSL connection for password protection.
   # In order to do this Apache needs to use a self-signed certificate
   # Talk to Cordel and/or consult Apache Docs and OpenSSL docs
   # SSLRequireSSL

   AuthType Basic
   AuthName "Subversion Repository"
   AuthUserFile /etc/svn-auth-file
   Require valid-user
   </Location>

Итак - как я могу добавить одного обычного пользователя, который был бы доступен только для чтения для всех репозиториев, расположенных в SVNParentPath (опция A)? И за дополнительную плату - как я могу создать уникальных пользователей только для чтения для отдельных репозиториев (вариант B). И все это при сохранении пользователей, которые должны пройти аутентификацию для полного доступа для чтения и записи во всех репозиториях.

Я пытался выполнить это самостоятельно, однако, пытаясь переварить значение «предельных» методов, я смущен отсутствием прямого объяснения того, какие методы доступны и что каждый метод на самом деле делает в отношении конфигурации SVN / Apache. Я имею в виду, что здравый смысл говорит мне, что GET - это GET (только для чтения) и что POST - это операция записи, но это всего лишь здравый смысл. Я слишком долго программировал, чтобы предположить, что некоторые A-Hole не создавали операции GET с возможностью записи данных. Это мое затруднительное положение. Кто-нибудь может пролить свет?

Спасибо!

1 Ответ

8 голосов
/ 15 февраля 2012

Просмотрите файл Path Based Authorization , где вы можете определить пользователя только для чтения, используя:

[/]
username = r

или вы можете определить пользователя для разных репозиториев

[repo1:/]
username = r

[repo2:/]
username = r

Для достижения вышесказанного вам необходимо добавить следующее в вашу конфигурацию Apache:

LoadModule authz_svn_module path/to/mod_authz_svn.so
...
AuthzSVNAccessFile /path/to/access/svnaccess
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...