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

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

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

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

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

5
задан 23 May 2017 в 15:41
1 ответ

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

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

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

2
ответ дан 3 December 2019 в 01:58

Теги

Похожие вопросы