Я следил за книгой по подрывной деятельности бесчисленное количество раз, пытаясь установить правильную авторизацию пути на нашем сервере подрывной деятельности, но мне не удалось выполнить эту работу. Вот мой файл правил доступа:
[groups]
sales-admin = alexa, miked, chrism
[/]
$authenticated = rw
[Product_Sales:/]
~@sales-admin =
Это должно дать всем аутентифицированным пользователям доступ к каждому репозиторию, размещенному на этом сервере, но ограничить доступ для чтения и записи репозитория Product_Sales к группе администраторов продаж. Однако на практике это не так, ни одно из моих разрешений не работает должным образом. Вот что происходит в каждом случае использования:
Когда я пытаюсь обновить, зафиксировать или оформить заказ из любого другого репозитория, я получаю сообщение об ошибке «Доступ запрещен», и мне не предоставляется возможность аутентифицироваться даже после очистки моих сохраненных учетных данных из TortoiseSVN.
Токен с аутентификацией $ не работает. Если я заменю «$ authenticated = rw» на «* = rw», я снова получу доступ, но меня больше не попросят войти в систему, даже если я не предоставил никаких учетных данных. Попытка выполнить фиксацию заставляет меня войти в систему, но мне нужно, чтобы аутентификация всегда происходила при взаимодействии с репозиторием, в том числе при операциях только для чтения.
Установка разрешений в репозитории Product_Sales вообще не дает мне доступа к Product_Sales, даже если в корне сервера установлено * = rw.
Мне нужно знать, что не так с моими правилами доступа. Я несколько раз пытался заставить работать авторизацию на основе пути за последние несколько лет, но безуспешно. Если кто-нибудь может мне помочь, я был бы очень признателен. Я просто хочу знать, что я неправильно понимаю в объяснении аутентификации на основе пути в книге Subversion.
http://svnbook.red-bean.com/en/1.7/svn.serverconfig.pathbasedauthz.html
РЕДАКТИРОВАТЬ: Вот моя информация о сервере подрывной деятельности
Collabnet Subversion Edge 3.2.2-3395.103
Subversion 1.7.8-3395.103
У меня нет окончательного ответа (пока), только некоторые идеи
Если я заменю "$ authenticated = rw" на "* = rw", я снова получу доступ, но меня больше не просят войти в систему, даже если я не предоставил никаких учетных данных
* = rw
в точности означает «Все могут читать и писать», все «даже анонимны». У вас есть SVN-сервер на базе Apache или svnserve? В случае Apache вы должны (должны) ограничить доступ к репозиторию на уровне Apache перед доступом на основе пути
И, кстати, волшебные токены применимы для SVN 1.5+ (есть ли шансы иметь более старую версию?)
Обновить
Ход отладки
DAV svn
SVNListParentPath on
SVNParentPath ...
AuthName ...
AuthType Basic
AuthBasicProvider file
AuthUserFile ...
# AuthzSVNAccessFile ...
Require valid-user
в этой конфигурации только пользователи, перечисленные в AuthUserFile, могут дать полный доступ к любой репо, любой часть репо
Добавьте проверки на основе пути, раскомментируйте AuthzSVNAccessFile. Поскольку с используемой конфигурацией анонимные пользователи не будут иметь доступа ни к одному репо, $authenticated
токен становится чрезмерным, $ authenticated == * в этой ограниченной области
Для [Product_Sales: /] для правила «Только одна группа имеет доступ», я предпочитаю пуленепробиваемое перегруженное определение
[Product_Sales:/]
* =
@sales-admin = rw
Т.е. весь доступ явно отключен, включена только одна группа в том же явном стиле