Назад | Перейти на главную страницу

Правила доступа к репозиторию Subversion

У меня есть несколько репозиториев и пользователей, настроенных через CollabNet Subversion Edge. Я пытаюсь немного узнать об ограничении доступа к некоторым из наших репозиториев только для нескольких пользователей, и у меня возникают некоторые проблемы. Например, у меня есть следующие правила:

[groups]
engineers = alexa, miked
dtil = user1, user2, user3

[/]
* = rw

[PermissionsTest:/]
~@engineers =

Что я хочу сделать, так это оставить другие репозитории в покое (позволить кому-либо читать или писать в них, поэтому я оставил [/] * = rw), но иметь возможность ограничить PermissionsTest в этом случае только одной группой пользователей. Однако я все еще могу проверить и обновить код в PermissionsTest как другой пользователь, не входящий в группу инженеров.

Можно ли вообще ограничить доступ к репозиторию одним правилом? Или мне явно нужно предоставить доступ пользователям и группам к каждому репозиторию, чтобы это работало?

Управление доступом Subversion наследуется от более высоких уровней, если на нужном вам уровне нет явного совпадения. В вашем случае группа dtil неявно предоставляется rw в тестовый репозиторий, поскольку в нем уже есть rw на родителя.

Если у вас есть модель, согласно которой большинство ваших репозиториев rw с несколькими ограниченными, тогда вы должны позаботиться о том, чтобы явно deny те пользователи и группы, у которых могут быть разрешения выше:

[PermissionsTest:/]
~@engineers =
* = 

Достаточно чисто в вашем случае, но, как вы понимаете, будет очень запутано, если у вас будет много групп и репозиториев, за которыми нужно следить; того, чтобы прямо отрицать доступ никогда не бывает хорошим подходом. Я бы рекомендовал удалить этот низкий уровень * = rw default и добавление его обратно в качестве политики по умолчанию только для репозиториев, которые вы хотите открыть (принцип наименьших привилегий). Это может сделать вашу конфигурацию немного больше, но это более безопасный путь.

Сначала удалите это

[/]

* = rw

и явно предоставить пользователю права доступа к проектам.