Git无法创建文件,权限被拒绝。

8
我正在使用亚马逊EC2来托管一个网站,该网站通过git部署到服务器上。我之前在同样类型的EC2 Ubuntu Linux服务器实例上使用了这个教程,并且它一直运行良好。然而,当我尝试推送到服务器时,我收到以下错误跟踪信息:
教程:http://toroid.org/ams/git-website-howto 跟踪信息:
$ git push origin master

Counting objects: 5, done.
Writing objects: 100% (3/3), 250 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: error: unable to create file index.html (Permission denied)
To ssh://ubuntu@myserv.er/var/www/website.git
   8068aac..04eae11  master -> master

目前仓库里只有一个文件,即 index.html

错误跟踪显示权限被拒绝创建文件。请问我哪里出了问题?

4个回答

5

+1 命令对我有用,但链接是与问题无关的。 - AlexP

4
您可能没有完成教程的这个部分:
首先,工作树(/var/www/www.example.org)必须能够被运行钩子的用户写入(或者该用户需要sudo访问权限来运行git checkout -f或类似命令)。

1
那么在Windows上使用Git呢?尽管我是管理员,而且运行Git的控制台也是以管理员身份运行的,但我现在面临着权限被拒绝的错误。这就像是一场噩梦... - Čamo

2
你的杀毒软件或其他程序可能会阻止该文件被写入到你的文件夹中。如果你仔细观察,你会发现除了权限被拒绝的那个文件外,所有其他文件都已经创建成功了。
你可能有一款保护软件阻止了某些文件类型的创建,无论你以何种用户类型登录,该文件都不会被创建,直到你禁用该软件。
因此,对于运行 Windows 的用户,请检查你的杀毒软件是否是造成这种情况的原因。

1

我遇到了这个错误是因为我创建了一个钩子来更新另一个网站根目录中的文件。例如:

/var/www/project.git  # (where we push updates)
/var/www/project.com  # (where the website exists)

我忘记将组权限添加到project.com目录中。在我进行下一次提交/推送之后,index.html出现在/var/www/project.com目录中,这让它全部工作了!
完整的代码,假设你已经将用户添加到“开发人员”组中:
sudo chmod -R g+ws /var/www/project_name.git
sudo chgrp -R developers /var/www/project_name.git
sudo chmod -R g+ws /var/www/project_name
sudo chgrp -R developers /var/www/project_name

而且共享仓库的Git设置:

git config core.sharedRepository group

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