[英]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.