确定git提交来自哪台计算机

时间:2016-02-08 00:58:53

标签: git computer-forensics

最近我一直在探索知识产权法的广阔而可怕的世界,人们似乎认为,如果你用自己的设备在你的时间创造某些东西(软件),它通常属于你。我知道有很多这方面的例外情况以及一些关于这个主题的非常好且内容丰富的帖子。但现在我对于违反这项协议的人可能被证明有罪而感到好奇。

我的问题是,是否可以将特定的git提交链接到它提交的计算机?怎么样?

1 个答案:

答案 0 :(得分:8)

当您通过HTTP,HTTPS或SSH推送到Git存储库时,远程服务器通常会创建连接发生的时间和源自哪个IP地址的日志。但是,大多数公司都使用NAT,导致网络上的多台计算机共享相同的公共IP地址。

一些示例日志:

# SSH
Feb  8 01:08:37 git-server sshd[12619]: Accepted publickey for git from 192.168.1.100 port 63012 ssh2: RSA SHA256:XxXxxXxxXXXxXX
Feb  8 01:08:37 git-server sshd[12619]: pam_unix(sshd:session): session opened for user git by (uid=0)

# Apache HTTP(s)
192.168.1.100 - - [8/Feb/2016:22:03:18 +0000] "GET /repos/info/refs HTTP/1.1" 200 153

此外,Git是分散的,因此实际推送提交的计算机不一定会提交提交。

提交通常与某种名称或用户名以及电子邮件地址相关联;但是,这可以在提交时进行更改,而无需创建之前的内容和现在的内容。

这很简单:

$ git config user.name "John Doe"
$ git config user.email johndoe@example.com
$ git commit
$ git config user.name "Jane Otheruser"
$ git config user.email janeotheruser@example.com

因此,简而言之,有一些启发式方法可以指出谁创作了一个提交,从哪里开始,但绝对不是绝对的。 Git本身不会记录有关创作提交的计算机的唯一标识信息。

像Subversion这样的版本控制系统,其中所有提交都立即被推送到一个中央存储库,更容易链接到公共IP,但仍未链接到单个计算机或用户。