出于安全考虑,我希望默认情况下禁用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'
答案 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
目录在需要时不与虚拟机共享,并且在使用每个不同的存储库之前需要设置命令行标志或环境变量。