繁体   English   中英

尝试推送到Linux AWS服务器上的裸仓库时出现“权限不足...”错误

[英]I'm getting a 'insufficient permission…' error when trying to push to my bare repo on my linux AWS server

更新(11/4):仅测试一下我的Linux机器上是否确实存在权限问题,

在AWS Linux裸仓库中,我做了一个'sudo chmod -R 777'。 并且能够成功完成“ git push origin master”,而我立即做了“ sudo chmod -R 770”。 改回权限。

尝试推送到我的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM