2012-05-08 4 views
2

По какой-то причине мой гитолит не пришел с образцовым конфигурационным файлом, и я не могу найти его нигде, я уверен, что на этот вопрос будет дан ответ в этом файле, если кто-то найдет мне копию , пожалуйста!!, пожалуйста, помогите мне разобраться с пользователями 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 [email protected]:grindstone.git 

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

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

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

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

Кстати, вот мой .ssh/конфигурации

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

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

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

$ git clone [email protected]: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 config не изменился. кроме того, у меня есть это в моем журнале

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 

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

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

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

+2

Вы потрудились прочитать обширную [гитолитную документацию] (http://sitaramc.github.com/gitolite/master-toc.html)? Кроме того, [Stack Overflow не является «catch-all»] (http://meta.stackexchange.com/a/128577/183347) – KurzedMetal

+0

У меня есть, но это не объясняет, почему ничего не работает, если я не дам полный контроль gitadmin of repo – scphantm

+0

Пожалуйста, избегите любых '@' в имени пользователя. Или попробуйте его закодировать (% 40). Но я бы все же избегал этого вообще. Какую версию гитолита вы используете? – VonC

ответ

2

Я просто указать свои 2 основных ошибки:

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

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

+0

хорошо, обновлен до последней версии и по-прежнему получает ту же ошибку, я разместил более подробные сведения выше. – scphantm

+0

@scphantm Ваш '.ssh/config' не имеет никакого смысла. Вы определяете один и тот же «хозяин» дважды. – KurzedMetal

2

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

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

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

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

благодарит всех.

+0

Хорошая обратная связь, спасибо. +1 – VonC

+0

У меня была аналогичная проблема. Раньше я запускал установку с неправильным ключом. Несмотря на использование gitolite setup -pk с новым ключом (и возможность получить ответ от информации), мне отказали в доступе к репозиторию admin. Я уничтожил всю установку gitolite и переделал процесс с помощью правильной клавиши, и все хорошо. – Errol