У меня есть несколько репозиториев и пользователей, настроенных через 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
и явно предоставить пользователю права доступа к проектам.