Показывать только репозитории GIT, к которым пользователь имеет доступ с помощью gitweb - PullRequest
5 голосов
/ 03 сентября 2011

В настоящее время я экспериментирую с настройкой сервера репозитория GIT, чтобы мы могли перейти с SVN на GIT.Я почти все рассмотрел, но осталась проблема.

Текущая настройка выглядит следующим образом:

  • Все разработчики (и не разработчики) имеют учетные записи пользователей &правильные группы, потому что сервер является клиентом NIS
  • Все репозитории сделаны в / var / git /
  • Все операции извлечения / отправки выполняются через ssh

Это работаетпока что идеально, и устраняет необходимость в gitosis или gitolite.

Потому что я хотел бы иметь обзорный обзор репозиториев, которые я настроил, включая gitweb, включая pathinfo.Поскольку репозитории являются частными, я настроил аутентификацию через Perl AuthenNIS, и это работает, но здесь я сталкиваюсь с проблемой.

Нежелательно, чтобы все разработчики имели доступ ко всем репозиториям, но gitweb просто показывает каждый репозиторий(пользователь apache) может читать.

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

Возможные решения :

  1. Дальнейшее управление доступом через .htaccess.Pathinfo включит это, но не помешает доступу к репо через URL, не являющиеся pathinfo (например, /repo.git/ не будет работать, но /gitweb.cgi?p=repo.git будет)
  2. Создание полной среды Gitosis / Gitolite и интеграция ее в Gitweb (по сути это ).Я хотел бы предотвратить это, поскольку нежелательные издержки
  3. заставляют gitweb работать как аутентифицированный пользователь HTTP.Это решит все проблемы с контролем доступа, но я не знаю, как это сделать
  4. gitweb $export_auth_hook в сочетании с $cgi->remote_user кажется многообещающим, но мое понимание perl слишком ограничено, чтобы его использовать (hook должен убедиться, что у пользователя есть разрешение на доступ к каталогу репо, прежде чем показывать / экспортировать его)

Есть ли кто-нибудь, кто знает, как заставить работать 3 или 4, или имеет другое решение?

1 Ответ

2 голосов
/ 04 сентября 2011

Если разработчики выталкивают / извлекают данные с сервера репозитория, используя ssh в разделе (я предполагаю) свои имена пользователей, то, возможно, самый простой способ добиться этого - найти способ запустить gitwebили git под этим именем пользователя.

Например, найдите способ добавить хук аутентификации перед выполнением gitweb.Затем добавьте обертку вокруг gitweb, которая выполняет sudo -u $user gitweb.real, где $user - аутентифицированное имя пользователя.

Или вы можете просто обернуть команду git, то есть gitweb выполнить обертку, котораяделает sudo -u $user {real-git-path}.

Для реализации аутентификации по NIS / PAM в Apache, посмотрите на mod_auth_external

...