簡體   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