В настоящее время я изучаю, можно ли использовать bzr в настройке, подобной тому, что gitolite делает для git. Это означает единую учетную запись unix с разными пользователями, управляемыми через их открытые ключи ssh. Я был бы рад интегрировать это с gitolite, и в этом случае управление пользователями и создание подходящего ~/.ssh/authorized_keys
может быть делегирован. Это позаботится об аутентификации.
Что меня беспокоит, так это авторизация. Насколько я понимаю, bzr serve
из коробки есть только --directory
флаг для обеспечения контроля доступа. Это хорошо работает с предоставлением каждому пользователю его или ее собственного набора репозиториев или для распределения пользователей по группам и предоставления каждой группе единого фиксированного набора репозиториев. Приложив немного больше усилий, можно использовать один каталог для каждого пользователя, но использовать символические ссылки, чтобы разрешить общий доступ к репозиториям для нескольких пользователей.
Тем не менее, это все еще намного меньше того, что может сделать гитолит. Используя этот подход, невозможно предоставить отдельным пользователям доступ только для чтения к некоторым репозиториям, кроме доступа для чтения и записи. Также невозможно предотвратить перезапись push или создание новых репозиториев в каталогах пользователя.
Возможно, эти функции еще не реализованы. В связанный вопрос о переполнении стека Я спрашиваю о способах воплощать в жизнь это я. Здесь, о сбое сервера, я концентрируюсь на существующий решения. Есть ли готовые решения, которые bzr serve
с более детальным контролем доступа, чем простой --directory
ограничение? Полностью интегрированное решение, такое как gitolite, было бы наиболее интересным, но было бы неплохо знать даже какое-то расширение, которое можно было бы настроить для решения одной из упомянутых мной проблем.
Если вы не настроены только на одного пользователя, вы можете подумать о следующей настройке:
chmod g+s <repo>
).setfacl -R -m d:u:UID:rwX <repo>; setfacl -R -m u:UID:rwX <repo>
). Это гарантирует, что владелец всегда может удалить.Таким образом, вы можете управлять доступом для чтения с помощью «символическая ссылка существует» и доступом для записи «пользователем в группе». Если вы хотите реализовать несколько главных пользователей для репозитория, вы можете добавить дополнительные d: u: UID: rwX, u: UID: rwX, по одному для каждого дополнительного мастера.