尝试推送到我的 linux AWS 服务器上的裸存储库时出现 'insufficient permission...' 错误
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 服务器上的裸存储库时遇到 'insufficient permission...' 错误。
$ 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 连接到我的服务器并尝试阅读 Git Push Error: insufficient.. 问题,但不确定我需要授予哪个组权限?我是否需要在我的 AWS 服务器上添加一个与我的开发箱上的组相匹配的新组?
附加信息:
如果我不清楚,我正在尝试从本地开发箱到 AWS linux 服务器的 'git push origin master'。推送来自我的本地 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
~
~
~
从本地回购(开发箱)我做了一个 $ 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 并验证权限是正确的。
完成这一切之后,我能够从 y DEV 框上的本地回购和 AWS Linux 框中的回购推送和拉取我的裸回购。
顺便说一句:不错的小东西 Linux permission calculator。
更新 (11/4): 只是为了测试它是否确实是我的 linux 框上的权限问题,
在 AWS Linux 裸回购中我做了一个 'sudo chmod -R 777 .' 并且能够成功完成一个 'git push origin master' 然后我立即做了一个 'sudo chmod -R 770 .' 来更改权限.
我在尝试推送到我的 linux AWS 服务器上的裸存储库时遇到 'insufficient permission...' 错误。
$ 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 连接到我的服务器并尝试阅读 Git Push Error: insufficient.. 问题,但不确定我需要授予哪个组权限?我是否需要在我的 AWS 服务器上添加一个与我的开发箱上的组相匹配的新组?
附加信息: 如果我不清楚,我正在尝试从本地开发箱到 AWS linux 服务器的 'git push origin master'。推送来自我的本地 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
~
~
~
从本地回购(开发箱)我做了一个 $ 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 并验证权限是正确的。
完成这一切之后,我能够从 y DEV 框上的本地回购和 AWS Linux 框中的回购推送和拉取我的裸回购。
顺便说一句:不错的小东西 Linux permission calculator。