Я создал репозиторий 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>
У меня есть два репозитория с именами «первый» и «второй», а содержимое dav_svn.authz:
[first:/]
doe = rw
* = r
[second:/]
doe = rw
grig = rw
* = r
Когда я пытаюсь проверить вторую с помощью пользователя doe, я получаю это в error_log: user doe: ошибка аутентификации для "/ svn / second": Несоответствие пароля
Чтобы понять, в чем может быть проблема, я хотел бы лучше понять, как должен работать AuthzSVNAccessFile.
Ошибка возникает только у пользователя doe в обоих репозиториях? Или у грига на втором репозитории не получается? Предполагая, что это не удается для всех пользователей, и предполагая, что ошибка не в 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
будет путь к репо.
Не уверен, что это решит проблему, но я полагаю, что ваш текущий файл conf не совсем то, что вам нужно.