如何防止root运行git pull?

12

需要防止管理员更新一个Git(工作)目录。原因包括但不限于:防止不必要的文件系统所有权更改。

在发生操作之前,似乎没有任何git钩子可以像预提交钩子一样防止执行拉取/合并/获取等操作。或者至少,我在这里(或man页面中)没有看到任何内容: http://www.analysisandsolutions.com/code/git-hooks-summary-cheat-sheet.htm

有什么想法吗?


4
“prevent root[...]” 的翻译是:“防止获取 root 权限[...]” - 我认为这是不可能的。 - poke
2
@meagar 已经在做这个了。但是,在一个许多人都拥有 root/sudo 访问权限的团队环境中,想要特别阻止人们以 root 身份登录并无意中更改不应更改的内容。有时候人们会忘记旧习惯(我们曾经需要更新时使用 root/sudo 权限,但现在不再需要),以 root 身份登录,并做一些不该做的事情。 - Johnny Utahh
相关内容:https://dev59.com/pE7Sa4cB1Zd3GeqP69JG - willoller
4
我认为解决方法是开始惩罚那些不注意使用 root 权限的人。第一步应该是撤销 root 权限... - user229044
@meagar,是啊,这很合理。另外:我们通过以下方式修复了整个问题:1)一个 post-checkout 的 chmod/chown 命令脚本(之前已经有了),它2)不仅设置组所有权,还设置了用户所有权(之前没有),以及3)使用户/组所有权得到适当的限制。添加 #2 和 #3 似乎已经消除了“禁用 root”解决方案的需求(虽然尚未得到确认)。但是如果将来需要,拥有此类解决方案和/或“预获取”的提交挂钩仍然是非常好的。 - Johnny Utahh
显示剩余2条评论
2个回答

12

更改/root/.bashrc,将新目录添加到PATH的开头。在那里添加一个名为git的shell脚本,该脚本测试$1是否是几个只读命令之一(show/status/log/rev-list等),如果可接受,则调用/usr/bin/git "$@"。这将防止您团队中任何人意外地以root身份运行git pull。如果您担心他们故意这样做,那么您有更大的问题......


6
最好的做法是,让命令打印一个错误信息,例如“请勿以root用户身份运行git”。 - Keith Thompson
3
在我的情况下,是我的部门经理在没有权限进行某些操作时一直使用“sudo su”。然后他执行了“git pull”命令并损坏了我的文件。我只想要一个错误消息,对于任何Git命令都应该显示“不要以root身份运行Git命令!停止破坏我的文件权限!” - Mnebuerquo

7

我认为这个问题至少可以通过一个git命令的包装器来“缓解”:

所有的git命令都通过这个包装器进行,如果用户ID不是root,则继续执行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接