пожалуйста, помогите мне понять пользователей gitolite

По какой-то причине мой gitolite не поставлялся с образцом файла конфигурации, и я не могу найти его нигде, я уверен, что ответ на этот вопрос есть в этом файле, если кто-то может найти мне копию, пожалуйста!!

В любом случае, формат конфигурационного файла gitolite достаточно прост, вот фрагмент из моего

gitolite conf
# please see doc/gitolite.conf.mkd for details on syntax and features

@nmscDevs = [email protected] [email protected] [email protected]
@buildMgr = [email protected] [email protected]

repo    gitolite-admin
    RW+     =   gitadmin [email protected]

repo    grindstone
    RW+ = gitadmin
    RW+ prod$ = @buildMgr
    - prod$ = @nmscDevs
    RW = @nmscDevs

У меня есть несколько открытых ключей в папке keydir:

keydir/
gitadmin.pub
[email protected]

Моя проблема в том, что gitolite игнорирует разрешения, установленные для отдельных пользователей. ничего не работает в репозитории (чтение, запись и т. д.), если я не даю пользователю gitadmin полный контроль. Тогда кажется, что все используют права пользователя gitadmin. Я клонирую репозитории вот так

git clone git@server:grindstone.git

но когда я пытаюсь клонировать что-то вроде этого

git clone '[email protected]'@server:grindstone.git

Мне предлагается ввести пароль. должен ли каждый отдельный пользователь иметь учетную запись на сервере, чтобы они могли подключиться к нему по ssh?

Как именно работают разрешения в gitolite? Я понял, что пользователю git нужна учетная запись для входа по ssh на сервер, а затем, когда gitolite вступает во владение, он использует электронную почту, которая передается вместе с запросом git, для определения разрешений, я ошибаюсь здесь? что мне не хватает?

Кстати, вот мой .ssh/config

host server
     user git
     hostname server
     identityfile ~/.ssh/gitadmin

host server
     user [email protected]
     hostname server
     identityfile ~/.ssh/id_rsa

Обновление: я обновился до последней версии gitolite, когда я пытаюсь сделать клон, я получаю это

$ git clone git@server:testing.git
Cloning into 'testing'...
FATAL: R any testing gitadmin DENIED by fallthru
(or you mis-spelled the reponame)
fatal: The remote end hung up unexpectedly

мой файл конфигурации теперь выглядит так:

repo testing
    RW+ = william_slepecki 

и моя конфигурация .ssh не изменилась. кроме того, у меня есть это в моем журнале

2012-05-08.13:01:13     19027   ssh     ARGV=gitadmin   SOC=git-upload-pack 'testing.git'       FROM=10.99.5.146
2012-05-08.13:01:13     19027           access(testing, gitadmin, R, 'any'),-> R any testing gitadmin DENIED by fallthru
2012-05-08.13:01:13     19027           trigger,Writable,access_1,ACCESS_1,testing,gitadmin,R,any,R any testing gitadmin DENIED by fallthru

и вот верхний фрагмент моей глобальной конфигурации git

[user]
    name = Willie Slepecki
    email = [email protected]

почему это все еще настаивает на том, чтобы gitadmin был в репозитории, и почему он не использует william_slepecki? где именно это имя используется?


person scphantm    schedule 08.05.2012    source источник
comment
Вы удосужились прочитать обширную документацию по gitolite? Кроме того, Stack Overflow не является универсальным   -  person KurzedMetal    schedule 08.05.2012
comment
У меня есть, но это не объясняет, почему ничего не работает, если я не даю gitadmin полный контроль над репозиторием.   -  person scphantm    schedule 08.05.2012
comment
Пожалуйста, избегайте использования @ в имени пользователя. Или попробуйте его закодировать (%40). Но я все же предпочел бы вообще избежать этого. И какую версию gitolite вы используете?   -  person VonC    schedule 08.05.2012
comment
@scphantm дело в том, что вы делаете действительно основные ошибки, вы, очевидно, не потратили много времени на чтение необходимого для настройки сервиса. Вот почему я указал вам на подробную документацию   -  person KurzedMetal    schedule 08.05.2012
comment
ну, я уверен, что это часть моей проблемы, по какой-то причине я использую V2, прямо сейчас я обновляюсь до V3.   -  person scphantm    schedule 08.05.2012


Ответы (2)


Я просто укажу ваши 2 основные ошибки:

1-я ошибка: Gitolite использует только пользовательскую часть (то, что предшествует '@') ключей, найденных в каталоге ключей.
Например: gitolite распознает только одного пользователя, william_slepecki, для ключей [email protected] и [email protected] единственная точка здесь то, что этот пользователь может аутентифицироваться с 2 разными ключами, вы не можете давать разрешения на ключи, только пользователям.

2-я ошибка: ваш сервис gitolite предоставляется только одним обычным системным пользователем, вероятно, git, поэтому подключения должны быть выполнены к [email protected]:repo.git, пользователям gitolite не нужна или не нужна системная учетная запись, просто ключ ssh, поэтому подключение к [email protected]:repo.git никогда не будет работай

person KurzedMetal    schedule 08.05.2012
comment
ну, я обновился до последней версии и все еще получаю ту же ошибку, я разместил более подробную информацию выше. - person scphantm; 08.05.2012
comment
@scphantm Ваш .ssh/config вообще не имеет смысла. Вы определяете один и тот же хост дважды. - person KurzedMetal; 08.05.2012

Ну, моя проблема была в несколько раз.

Во-первых, я неправильно понял роль ключа gitadmin. я думал, что, поскольку это единственный пользователь, у которого есть реальная учетная запись на сервере, он должен быть на всех рабочих станциях разработчиков. Оказывается, это было неправильно. gitolite берет ключи из каталога keydir и добавляет их в файл git/.ssh/authenticated_keys при нажатии. Это позволяет всем ключам в keydir войти в систему как пользователь git на машине. Поскольку у пользователя git нет связанной с ним консоли, дыры в безопасности нет.

Во-вторых, мой файл ~/.ssh/conf. Поскольку я не понимал, как работает # 1, я думал, что git каким-то образом передает адрес электронной почты как имя пользователя как часть команд git. Как только я разобрался с пунктом 1, я смог очистить конфигурационный файл, чтобы отобразить пользователя git@server и использовать обычный для всего остального.

Как только эти две проблемы были поняты и решены, все разрешения начали работать правильно. Теперь я заменил ключ пользователя gitadmin на сервере, чтобы сделать его недействительным на станциях разработчиков, и обновил все мои конфигурации разработчиков. Администрация снова довольна.

всем спасибо.

person scphantm    schedule 08.05.2012
comment
У меня была аналогичная проблема. Раньше я запускал установку с неправильным ключом. Несмотря на использование gitolite setup -pk с новым ключом (и возможность получить ответ от информации), мне было отказано в доступе к репозиторию администратора. Я сбросил всю установку gitolite и переделал процесс с правильным ключом, и все в порядке. - person Errol; 26.05.2012