[英]I'm getting a 'insufficient permission…' error when trying to push to my bare repo on my linux AWS server
更新(11/4):仅测试一下我的Linux机器上是否确实存在权限问题,
尝试推送到我的Linux AWS服务器上的裸仓库时,出现“权限不足...”错误。
$ git push origin master
Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 622 bytes | 0 bytes/s, done.
Total 4 (delta 3), reused 0 (delta 0)
remote: error: insufficient permission for adding an object to repository database objects
remote: fatal: failed to write object
error: unpack failed: unpack-objects abnormal exit
To awsDev:/AWSbareRepo
! [remote rejected] master -> master (unpacker error)
error: failed to push some refs to 'awsDev:/AWSbareRepo'
我可以拉,但不能推。 我做了一个'git ls-remote',它与远程存储库中的可用引用以及关联的提交ID一起很好地返回了,所以连接不是问题。
我还在.config文件中将core.sharedRepository设置为true:
[core]
repositoryformatversion = 0
filemode = true
bare = true
sharedRepository = true
~
~
~
在裸仓库目录上的AWS Linux服务器上,执行“ ls -la”,并收到以下消息:
$ ls -la
total 40
drwxr-xr-x 7 root root 4096 Nov 4 04:56 .
dr-xr-xr-x 28 root root 4096 Oct 14 02:06 ..
drwxrwsr-x 2 root root 4096 Apr 16 2015 branches
-rwxrwSr-- 1 root root 91 Nov 4 04:56 config
-rw-rwSr-- 1 root root 73 Apr 16 2015 description
-rw-rwSr-- 1 root root 23 Apr 16 2015 HEAD
drwxrwsr-x 2 root root 4096 Apr 16 2015 hooks
drwxrwsr-x 2 root root 4096 Apr 16 2015 info
drwxrwsr-x 12 root root 4096 Oct 14 03:21 objects
drwxrwsr-x 4 root root 4096 Apr 16 2015 refs
我已将ssh'd进入服务器,并尝试阅读Git Push错误:不足..问题,但不确定我需要授予哪个组权限? 我是否需要在AWS服务器上添加与开发人员框中的组匹配的新组?
附加信息:如果我不清楚,我正在尝试将“ git push origin master”从我的本地dev盒连接到AWS linux服务器。 推送来自我的本地DEV框,当我尝试推送时,我没有通过SSH进入我的AWS Linux框。
不知道这是否必要,但我的AWS Linux服务器具有IP规则,该规则会阻止任何并非源自我的IP地址的SSH连接。
(此答案假设您正在使用ssh + git连接到存储库。)
按照ssh登录到AWS时,尝试输入id
。 这将为您提供登录用户的用户ID。 发现问题后,可通过(在存储库内部)更改存储库的权限
chown -R user_id:user_id .
这会将存储库中所有文件的所有权更改为您登录时使用的用户。 ( :user_id
更改组的所有权)
说明:您的存储库由root
拥有。 除非您还以root
身份登录,否则您将没有写权限。
在我的本地仓库(开发箱)上,我做了一个vim ~/.ssh/config
,它返回了:
Host awsDev
HostName ec2-01-23-45-678.us-west-2.compute.amazonaws.com
User ec2-user
IdentityFile /Users/MyName/Desktop/AWSFolder/MyAWSPemKey.pem
~
~
~
从本地存储库(Dev框)中,我执行了$ git remote -v
,返回了:
origin awsDev:/AWSbareRepo (fetch)
origin awsDev:/AWSbareRepo (push)
此时,我意识到我正在与“ ec2-user”连接,并且已经将ssh指向我的.pem密钥,并且可以通过简单地更改整个裸仓库(在我的AWS Linux机器上)的文件所有者来解决权限问题。从“ root”到“ ec2-user”。
在我的AWS Linux盒子上的裸仓库目录中,执行了一个$ chown -R ec2-user .
然后通过执行$ ls -la
验证文件所有者确实确实从“ root”更改为“ ec2-user”。
我的下一步是更新裸仓库的权限,所以我做了一个
chmod -R 770
这更改了我的权限,因此根组中的所有者和用户可以读取,写入和执行,而其他所有用户则不能。 我本来可以做700,因为ec2-user是所有者。
我再次做了$ ls -la并验证了权限是否正确。
完成所有这些操作后,我能够从DEV框上的本地存储区和AWS Linux框内的存储区中推送和拉出裸存储区。
顺便说一句:不错的Linux许可计算器 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.