如何全局禁用git hooks

时间:2018-01-07 07:23:34

标签: git security githooks

出于安全考虑,我希望默认情况下禁用git hook。

更具体地说,当我在我的(Kubuntu)OS帐户的任何git存储库中运行git命令时,除非以某种方式指定,否则不应执行git挂钩。

在Vagrant或Docker中运行我的所有代码并且我想要避免的攻击是VM中的恶意代码写入git hooks目录并因此将自己置于主机上的攻击。默认情况下禁用git hook是对此的一种防线。

我正在寻找一种不需要每个存储库工作和状态的解决方案。在我的搜索中,我遇到了this script,这打破了这两个要求。

理想情况下,有一个简单的解决方案,例如将其放入.bash_aliases

alias git='/usr/bin/git --no-hooks'

2 个答案:

答案 0 :(得分:2)

.pulse.animated[Some text ] 中设置core.hooksPath似乎很适合我

$HOME/.gitconfig

要启用特定回购的挂钩,您可以在[core] hooksPath = $SOME_DIR_WITHOUT_HOOKS

中对其进行重置
$REPO/.git/config

答案 1 :(得分:1)

.git目录具有写访问权限的攻击者可以攻击.git目录的用户的唯一方法是钩子,例如可以将选项diff.external设置为执行什么,谁跟踪所有新的Git功能?

如果您的开发环境在其中查找配置文件,或者如果它有一些在本地执行的脚本,即使让攻击者对存储库具有写入权限也可能不好。

保护.git仍然是一个好主意,我建议这些解决方案:

  • 在虚拟机中将.git设为只读。
  • .git目录放在与虚拟机共享的工作目录之外。 --git-dir标志或GIT_DIR环境变量控制Git查找.git目录的位置。缺点是.git目录在需要时不与虚拟机共享,并且在使用每个不同的存储库之前需要设置命令行标志或环境变量。