我最近在 Ubuntu 服务器上的专用网络中设置了一个新的 gitosis。网络中的所有其他客户端都是 Windows XP 机器,除了一个 Linux 客户端
我在 gitosis.conf 中有以下设置:
[group MyProjectTeam]
writable = MyProjectRepo
members = user1 user2 user3
我还在 keydir 中放置了 user1.pub、user2.pub 和 user3.pub 密钥文件。密钥是使用 ssh-keygen 在 Ubuntu 服务器上生成并分发给各个用户的。公钥的副本放在 keydir 中。
前两个用户是 Windows XP 用户,他们使用 msysgit + TortoiseGit 使用存储库,一个用户在 Linux 机器上使用默认命令行版本的 git 访问存储库。
现在一切都设置好了,每个人都可以做任何他们期望做的事情,他们可以拉、推、提交——一切看起来都很好,除非我们检查日志!!!
在 Linux 机器上使用 user3,我尝试了“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的钩子预接收可以在这里提供帮助,但我不知道如何使用它......有人可以帮忙吗?
谢谢,拉克什
更新:
感谢您的回答。
alexandrul,我没有设置全局设置,这是因为我希望每个用户的信息都应该被真实记录。
静噪,你是对的,我可以看到省略用户名的用户,但我如何强制他们这样做。我可以告诉他们配置他们的本地项目项目并设置用户名和电子邮件地址,但是如果有人使用假用户名或尝试使用其他人的用户名和电子邮件地址,基本上试图冒充其他人怎么办?
这就是为什么我认为为什么不记录私钥文件的名称,例如,我将文件名设置为 user1 的 user1.ppk,类似于 user2 的 user2.ppk。在这种情况下,即使有人试图扮演其他人,他们也不会成功,因为用于检查的关键名称会告诉我真相。
有任何想法吗???
问候, 拉克什
更新 2:
感谢帮助。Squelch,感谢您花时间解释这么多细节。我认为电视的蜘蛛网有很多信息,现在正在阅读。
到目前为止,我所做的一件事是:要求我的用户使用更新他们的配置来包含用户名和电子邮件地址。但我必须解决问题,因为我无法追逐每个用户。
我想要像 SVN+SSH 这样的东西,我们在密钥文件中使用 tunnled 用户名,它会被 SVN 记录下来。