Недавно я установил новый gitosis в своей частной сети на сервере Ubuntu. Все остальные клиенты в сети работают под управлением Windows XP, кроме одного клиента Linux.
У меня есть следующая настройка в gitosis.conf:
[group MyProjectTeam]
writable = MyProjectRepo
members = user1 user2 user3
Я также поместил файлы ключей user1.pub, user2.pub и user3.pub в keydir. Ключи были сгенерированы на сервере Ubuntu с использованием ssh-keygen и распространены среди соответствующих пользователей. Копия открытых ключей помещается в keydir.
Первые два пользователя являются пользователями Windows XP, они используют msysgit + TortoiseGit для работы с репозиторием, а один пользователь находится на компьютере с Linux для доступа к репозиторию, используя версию git для командной строки по умолчанию.
Теперь все настроено хорошо, и каждый может делать то, что от него ожидается, он может тянуть, пушить, фиксировать - все выглядит нормально, кроме тех случаев, когда мы проверяем логи !!!
Используя user3 на машине с Linux, я попробовал команду «git log» и получил следующий вывод:
commit 1b249e239d270b814aab31eed7dc6f04ceceba32
Author: User3 <Admin@ubuntu-server.(none)>
Date: Fri Sep 11 07:26:58 2009 +0530
modifed by user3
commit 646f8b11a715273dc26280fc1da2507c997f981c
Author: unknown <Admin@.(none)>
Date: Fri Sep 11 07:10:56 2009 +0530
modified by user2
commit 9f86dc7a6bfafc1c1e520d6de3dac7c613ac85cb
Author: unknown <Admin@.(none)>
Date: Fri Sep 11 06:50:22 2009 +0530
modified
commit b1a3b64005795f9592aae05c422c70a03dbb9b58
Author: admin <Admin@ubuntu-server.(none)>
Date: Fri Sep 11 06:18:54 2009 +0530
test file added by admin
Это неправильно. Этот журнал должен быть в состоянии сказать мне, кто является автором Push. Я чувствую, что он дает правильные значения для пользователей в Linux, поскольку их имя пользователя и адрес электронной почты также добавляются в информацию о пользователе Linux, но для клиентов Windows это неверно, поэтому их имена отображаются неправильно. Но даже если я исправляю имена на компьютере с Windows, это может быть скомпрометировано путем эмуляции имени другого пользователя, чтобы избежать этого, я не хочу полагаться на имена пользователей.
Я хочу, чтобы имя, указанное в файле SSH, отображалось там, или имя файла SSH, которое использовалось во время отправки, было добавлено в качестве автора.
Может быть, git's hook pre-receive может помочь здесь, но я не знаю, как его использовать... кто-нибудь может помочь?
Спасибо, Ракеш
ОБНОВЛЕНИЕ:
Спасибо за ответы.
alexandrul, я не устанавливал глобальные настройки, потому что я хочу, чтобы информация о каждом пользователе регистрировалась достоверно.
Squelch, вы правы, я вижу пользователей, которые опускают свои имена пользователей, но как заставить их это делать. Я могу сказать им настроить свой локальный проект проекта и установить имя пользователя и адрес электронной почты, но что, если кто-то использует поддельное имя пользователя или пытается использовать чужое имя пользователя и адрес электронной почты, в основном пытается выдать себя за другого?
Вот почему я подумал, почему бы не записать имя файла закрытого ключа, например. Я установил имя файла как user1.ppk для пользователя1, аналогично user2.ppk для пользователя2. в таких случаях, даже если кто-то попытается выдать себя за другого, у него ничего не получится, потому что имена ключей, которые используются для проверки, скажут мне правду.
Любые идеи???
С уважением, Ракеш
ОБНОВЛЕНИЕ 2:
Спасибо за помощь. Squelch, спасибо, что нашли время, чтобы объяснить так много деталей. Я думаю, что паутина телевидения имеет много информации, читая это прямо сейчас.
На данный момент я сделал одну вещь: попросил своих пользователей использовать обновление своей конфигурации, чтобы включить имя пользователя и адрес электронной почты. Но у меня получилось решить проблему так как я не могу гоняться за каждым пользователем.
Я хочу что-то вроде SVN + SSH, где мы используем туннелированное имя пользователя в ключевом файле, и оно записывается с помощью SVN.