Ubuntu中执行git init时出现权限被拒绝的问题

6
我想我的权限出了问题。 我安装了一个几乎全新的Ubuntu 14.04,并配置了我的虚拟主机以显示我的小型HTML项目。 在Firefox中,新站点没有任何问题可以正常工作。
但是现在我想初始化一个新的git repo却失败了。 当我在/var/www/html中键入时
git init  

我遇到了这个错误。
/var/www/html/.git: permission denied 

我的 /var/www 目录有以下权限:

drwxrwxr-x 13 www-data www-data 4096 Jan  4 18:48 html/ 

当我输入
ssh-add -l  

我的id_rsa(RSA)已正确显示。

我不知道还有什么其他遗漏。 :-(


1
您没有在该文件夹中写入的权限,而且这也不是我建议为每个人添加读写权限的文件夹。您可以将自己添加到www-data组中 usermod -a -G www-data your_username - Ding
当我输入(ls -l /var/www/html)时,结果是www-data www-data。 - Timo.Klement
@Ding 我无法使用(usermod -a -G www-data),因为它总是显示该命令的帮助信息。 - Timo.Klement
1
与更改用户权限相比,我个人认为也许更好的方法是更改Apache或Nginx的配置,使用另一个您拥有写入权限的文件夹。 - Eric
@Eric 你的意思是什么?/var/www 文件夹不是 Apache 的标准文件夹吗?我现在还没有更改 Apache 配置。 - Timo.Klement
在Apache中,DocumentRoot定义了文档根目录,你可以为特定的虚拟主机定义另一个根目录。如果你想尝试这种方式,我认为Google和Apache文档会提供更多细节。 - Eric
2个回答

6

您的/var/www文件夹权限只允许www-data用户和www-data组成员编写文件。您可以使用以下命令将自己添加到www-data组中:

usermod -a -G www-data your_username

如果您通过SSH登录,您需要注销,然后重新登录。

这样就可以在该文件夹中编写文件,而无需给所有人写入权限。 在生产服务器上这样做不是一个好主意。


1
好的,使用sudo我可以提交这个命令。 但是对于使用git进行初始化没有影响。 此外,我有一个新问题或者可能是同一个问题……我无法在/var/www内部使用mkdir创建一个新文件夹。 - Timo.Klement
尝试注销并重新登录。在将自己添加到组中后,我不得不这样做,然后一切都正常了。 - Ding
出于安全考虑,我建议不要使用那些权限,但那应该可以工作。 - Ding
@Ding 是的,但这是 op 的本地简单 html 项目,我认为安全性不是很重要,让他在部署到真正的服务器时关注安全性。 - Eric
如果你已经登录SSH,你需要先退出再重新登录。为什么我以前从没知道过呢? - cori

1

您可能没有访问您正在工作的目录的权限,因为它是由root拥有的。请检查是否有一个LOCK图标。如果有,请使用以下命令:

sudo chown <username>:<username> <name_of_working_directory>

其中,username是您的用户名。这将更改所有权并授予您访问文件夹和推送到git的权限。


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