2009-10-07 1 views
0

Я новичок в SVN и пытаюсь настроить управление доступом для нескольких проектов на SVN. Я хочу использовать один файл паролей и один файл аутентификации для контроля доступа для всех проектов. Но он не работает. Ниже приведены мои настройки. Моя структура каталогов:Контроль доступа для нескольких проектов с использованием SVN

/srv 
|--svn 
    |--repos 
     |-- conf 
      |-- passwd 
      |-- authz 
     |-- projectX 
     |-- projectY 
     |-- projectZ 

записей ProjectX/CONF/svnserve.conf для ProjectX:

[general] 
anon-access = none 
auth-access = write 
password-db = /srv/svn/repos/conf/passwd 
authz-db = /srv/svn/repos/conf/authz 
realm = Project Repository 

же конфигурация используется для projectY и projectZ. Записи в/SRV/СВН/репо/конф/пароль:

[users] 
user1 = password 
user2 = password 
user3 = password 

Записи в/SRV/СВН/хранилищу/CONF/AuthZ:

[/] 
* = 
user1 = rw 
[projectX:/] 
user2 = rw 
user3 = r 
[projectY:/] 
user3 = rw 
user2 = r 
[projectZ:/] 
user2 = r 
user3 = r 

Итак, user2 должен чтения-записи доступа для projectX и user3 должен иметь доступ только для чтения к projectX. Но только пользователь1 может получить доступ ко всем этим репозиториям. user2 и user3 никогда не смогут получить доступ к каким-либо репозиториям. Каждый раз, когда он выдает сообщение об ошибке: Commit failed (авторизация не удалась!) Может ли кто-нибудь помочь мне найти мою ошибку? Я использую версию 1.6.5 Subversion на сервере и 1.6.4 на клиенте.

+0

Нужно ли что-то делать с тем, что я использую svnserve, а не Apache? Разрешает ли svnserve использовать один файл authz для нескольких репозиториев? Я пробовал один файл passwd и отдельный файл authz для каждого репозитория, и он сработал! Я ничего не мог найти в красной книге SVN, в которой говорится, что svnserve не позволяет использовать один файл authz. – 2009-10-10 04:10:10

ответ

0

Я думаю, линия

* = 

вызывает у вас проблемы. Кроме того, я бы рекомендовал использовать раздел [groups] и добавить ваших пользователей в группы, даже если в настоящее время у вас есть только один пользователь в группе.

+0

Ну, я не хочу, чтобы пользователи, не прошедшие проверку подлинности, имели доступ к моим репозиториям. Кроме того, я думал, что параметр анонимного доступа в файле authz и что в svnserve.conf должен быть таким же. И я буду использовать раздел [groups], как только я решил текущую проблему. – 2009-10-07 08:44:42

0

Я думаю, что это потому, что пользователь2 и user3 не имеют доступа к [/].

Это только моя догадка; Я не знаю, как настроить SVN.

+0

Как и в файловой системе, пользователи должны иметь доступ ко всему пути, а не только к листовому узлу. –

+0

Нет, это не должно быть проблемой. – si618

0

Убедитесь, что CaSe репозиториев (projectX ...) являются правильными как в authz, так и на URL-адресе клиента. Subversion имеет nasty issue при использовании authz, где выписки - это случай в чувствительный, но фиксации чувствительны к регистру.

Вот пример:

svn co svn://server/projectx/trunk . // success 
... // do work 
svn ci // fail 


svn co svn://server/projectX/trunk . // success 
... // do work 
svn ci // success 

Я также был вопрос, где последняя строка в AuthZ и PASSWD не была пустая строка, то есть добавление CRLF до последней строки фиксированной его. Это было много лет назад, хотя, возможно, это исправлено.

+0

Спасибо за ваше мнение. Но в файле authz нет проблемы с CaSe. Конфигурация в файле authz так же, как я писал. – 2009-10-07 08:37:20

+0

Дело также важно для клиента. – si618

1

Я успешно использовал эту структуру с Subversion 1.4:

Subversion 
|-- Config 
    |-- a-users 
    |-- b-users 
|--Repositories 
    |-- x-repos 
     |-- conf 
      |-- svnserve.conf 
    |-- y-repos 
     |-- conf 
      |-- svnserve.conf 

... где svnserve.conf файлы содержал строку:

password-db = ../../../Config/a-users 

Таким образом, я могу использовать один password-db для любого количества репозиториев, или у меня может быть отдельный файл с паролем-db для каждого репозитория.

Если вы используете Subversion> 1.4, вам нужно посмотреть, как изменилась конфигурация в более новых версиях. Один момент состоит в том, что, по крайней мере, в 1.4, относительные пути действительно работают. Надеюсь это поможет.

Обновление: Я нахожусь в unix (Mac OS X).

+0

@Ivey: Чтобы ответить на ваш вопрос ... Да, я смог использовать один файл authz. В моем примере файлы a-users и b-users являются файлами authz. Я переместил их в общий каталог, чтобы их можно было ссылать и использовать для нескольких репозиториев. Например (и используя мой пример выше), если оба файла x-repos и y-repos svnserve.conf относятся к пользователям, то они оба будут использовать один и тот же файл authz. – markonian

Смежные вопросы