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

Многопользовательский сервер bzr

В настоящее время я изучаю, можно ли использовать bzr в настройке, подобной тому, что gitolite делает для git. Это означает единую учетную запись unix с разными пользователями, управляемыми через их открытые ключи ssh. Я был бы рад интегрировать это с gitolite, и в этом случае управление пользователями и создание подходящего ~/.ssh/authorized_keys может быть делегирован. Это позаботится об аутентификации.

Что меня беспокоит, так это авторизация. Насколько я понимаю, bzr serve из коробки есть только --directory флаг для обеспечения контроля доступа. Это хорошо работает с предоставлением каждому пользователю его или ее собственного набора репозиториев или для распределения пользователей по группам и предоставления каждой группе единого фиксированного набора репозиториев. Приложив немного больше усилий, можно использовать один каталог для каждого пользователя, но использовать символические ссылки, чтобы разрешить общий доступ к репозиториям для нескольких пользователей.

Тем не менее, это все еще намного меньше того, что может сделать гитолит. Используя этот подход, невозможно предоставить отдельным пользователям доступ только для чтения к некоторым репозиториям, кроме доступа для чтения и записи. Также невозможно предотвратить перезапись push или создание новых репозиториев в каталогах пользователя.

Возможно, эти функции еще не реализованы. В связанный вопрос о переполнении стека Я спрашиваю о способах воплощать в жизнь это я. Здесь, о сбое сервера, я концентрируюсь на существующий решения. Есть ли готовые решения, которые bzr serve с более детальным контролем доступа, чем простой --directory ограничение? Полностью интегрированное решение, такое как gitolite, было бы наиболее интересным, но было бы неплохо знать даже какое-то расширение, которое можно было бы настроить для решения одной из упомянутых мной проблем.

Если вы не настроены только на одного пользователя, вы можете подумать о следующей настройке:

  • У каждого пользователя есть свой UID.
  • umask для всех пользователей bzr - 002.
  • У каждого репозитория есть UID владельца и уникальная группа разрешений на запись.
  • У каждого репозитория есть каталог, основанный на дереве UID владельца.
  • Каждый каталог репозитория - это sgid (chmod g+s <repo>).
  • В каждом каталоге репозитория есть владелец fileacl по умолчанию rwX (setfacl -R -m d:u:UID:rwX <repo>; setfacl -R -m u:UID:rwX <repo>). Это гарантирует, что владелец всегда может удалить.
  • Каждый каталог имеет режим 775 и каждый файл 664.
  • При совместном использовании репозитория он привязывается к каталогу UID, как вы упомянули, с помощью ограничения каталога.
  • При предоставлении доступа на запись в репозиторий пользователь добавляется в группу разрешений на запись, связанную с этим репозиторием.

Таким образом, вы можете управлять доступом для чтения с помощью «символическая ссылка существует» и доступом для записи «пользователем в группе». Если вы хотите реализовать несколько главных пользователей для репозитория, вы можете добавить дополнительные d: u: UID: rwX, u: UID: rwX, по одному для каждого дополнительного мастера.