Как работает AuthzSVNAccessFile?
Я настроил репозиторий SVN с доступом к WebDAV. Почему-то не дает оформить заказ.
Вот моя часть httpd.conf:
<Location /svn>
DAV svn
SVNParentPath /home/svn/repositories
AuthzSVNAccessFile /home/svn/dav_svn.authz
Satisfy Any
Require valid-user
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /home/svn/dav_svn.passwd
</Location>
У меня есть два репозитория с именами "first" и "second", а содержимое dav_svn.authz:
[first:/]
doe = rw
* = r
[second:/]
doe = rw
grig = rw
* = r
Когда я пытаюсь оформить второе с пользователем doe, я получаю это в error_log: user doe: сбой аутентификации для "/svn/second": несоответствие пароля
Чтобы понять, в чем может быть проблема, я хотел бы лучше понять, как AuthzSVNAccessFile должен работать.
3 ответа
Ошибка возникает только для пользователя в обоих репозиториях? Или это не удастся Григ на втором хранилище? Предполагая, что это терпит неудачу для всех пользователей, и предполагая, что ошибка не находится в AuthUserFile и SVNParentPath корректен, я думаю, что вам нужно добавить правило доступа по умолчанию для всех ваших репозиториев.
[/]
* = r
[first:/]
doe = rw
[second:/]
doe = rw
grig = rw
Или вы можете поместить пользователей doe и grig в группу и сделать это следующим образом:
[groups]
secondteam = doe, grig
[/]
* = r
[first:/]
doe = rw
[second:/]
@secondteam = rw
Вы упоминаете, что хотели бы лучше понять, как AuthzSVNAccessFile должен работать. Я рекомендую прочитать этот урок. Ниже приведен пример файла авторизации на основе полного пути из этого руководства для поддержки нескольких репозиториев:
[groups]
admin = john, kate
devteam1 = john, rachel, sally
devteam2 = kate, peter, mark
docs = bob, jane, mike
training = zak
# Default access rule for ALL repositories
# Everyone can read, admins can write, Dan German is excluded.
[/]
* = r
@admin = rw
dangerman =
# Allow developers complete access to their project repos
[proj1:/]
@devteam1 = rw
[proj2:/]
@devteam2 = rw
[bigproj:/]
@devteam1 = rw
@devteam2 = rw
trevor = rw
# Give the doc people write access to all the docs folders
[/trunk/doc]
@docs = rw
# Give trainees write access in the training repository only
[TrainingRepos:/]
@training = rw
Вы использовали "htpasswd", чтобы добавить пользователя Doe в /home/svn/dav_svn.passwd, или это было из какого-либо типа интерфейсного администратора?
у меня были проблемы, например, с Virtualmin / Webmin они редактировали файл htpasswd в формате, отличном от apache, и проблема была решена путем чтения пользователя с использованием htpasswd.
Просто проверка (я не уверен, я проверю позже), но синтаксис не предлагается[first:/home/svn/first]
?
куда first
это имя, и /svn/first
будет путь к репо.
Не уверен, что это решит проблему, но я думаю, что ваш текущий файл конфигурации не совсем то, что вы хотите.