Git 权限问题

3

我第一次在我的VPS上尝试设置git。 我还使用Virtualmin。 当我使用root推送时,一切都安装并工作良好,但显然我不想这样做。 问题是,如果我尝试设置我的“git”用户以将其推送到我的public_html目录,则会出现以下错误:

remote: fatal: Could not switch to '/path/to/': Permission denied
error: unpack failed: unpack-objects abnormal exit

我猜这是因为我的git用户没有权限访问public_html文件夹所在的文件夹。我可以在post-receive钩子中添加一些内容来调用sudo或其他东西,以便避免这个问题吗?(抱歉,我知道这可能是一个非常简单的问题,但这是我第一次自己设置,我不能通过搜索找到好的答案。)


我在几种情况下都遇到过这个问题。如果你想让我对我的答案进行更详细的阐述,只需告诉我即可。 - rm-vanda
我确实理解权限数字。但是,我应该将我的git用户放在哪个组中?我知道git-group只是一个例子。但是我不是必须将git用户放在已经拥有sudo权限的组中吗? - thesublimeobject
这很有道理。我现在明白了:远程:错误:权限不足,无法将对象添加到存储库数据库./objects - thesublimeobject
另外,当我尝试使用第一个命令时,出现了以下错误: 更改 `/path/to/fcgi-bin/php5.fcgi' 的所有权:操作不允许 - thesublimeobject
你上一条命令已经生效了,但我仍然从几个位置收到同样的新 Git 错误。我将尝试重置并重新执行一些命令,看看能否修复问题。非常感谢你的帮助。 - thesublimeobject
显示剩余4条评论
1个回答

3
您可以更改所有权。这是首选方法: $ sudo chown -R git-user:git-group /path/to
或者,将自己添加到当前拥有它的组中: $ sudo usermod -a -G owner-group user 如果这样不起作用,只需放宽权限即可: $ sudo find /path/to/ -type f -exec chmod 664 {} + && sudo find /path/to/ -type d -exec chmod 775 {} +
FYI:数字代表所有者、组和其他人,因此664表示所有者和组可以读/写,而其他人只能读取。这样的权限对于在文件系统上工作的群组非常有用。
如果你是唯一的用户,那么第一个命令就足够了。

对于任何感兴趣的人,上面提供的内容非常有帮助,还有这个线程:https://dev59.com/jGw15IYBdhLWcg3wtd4g。 - thesublimeobject
这里的git-group是什么意思?我遇到了这个问题,而且我是唯一使用我的repo的人(据我所知没有组)。 - astromax
总是有一个组 - 它不是“git-group”,而是处理Unix文件权限组的组 - 所以,如果你是唯一在此工作的人,你需要在远程存储库上拥有的组是“yourusername” - 上面的说明应该会帮助你 - - rm-vanda

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