git 无法执行“pack-objects”:权限被拒绝

2023-11-30

从我刚刚添加的自托管 git 远程拉取时,我收到此错误。

$ git pull myremote master
fatal: cannot exec 'pack-objects': Permission denied
fatal: git upload-pack: unable to fork git-pack-objects
fatal: The remote end hung up unexpectedly
fatal: protocol error: bad pack header

谷歌搜索“cannot exec 'pack-objects': Permission denied" 带引号的结果为零,因此这不是重复的。有几个关于fatal: protocol error: bad pack header部分,答案如下this one建议添加一些内存限制行.gitconfig。那并没有解决我的问题。

根据第一行,我认为一些pack-objects某个地方的可执行文件丢失了x允许。但不是这个:

$ ls -l $(which git-upload-pack)
-rwxr-xr-x 1 root root 1559256 Apr 20 10:20 /usr/bin/git-upload-pack

就上下文而言,远程是运行 Debian 10 的 VPS,而客户端是 2003 年左右的古老 Intel Celron 桌面,运行 Ubuntu 18.04。因此,拉动机器上的资源限制可能发挥了作用。

EDIT:

所有 git 二进制文件均可由所有用户执行:

 $ ls -l /usr/bin/git*
 -rwxr-xr-x 1 root root 2759388 Apr 20 10:20 /usr/bin/git
 lrwxrwxrwx 1 root root       3 Apr 20 10:20 /usr/bin/git-receive-pack -> git
 -rwxr-xr-x 1 root root 1546968 Apr 20 10:20 /usr/bin/git-shell
 lrwxrwxrwx 1 root root       3 Apr 20 10:20 /usr/bin/git-upload-archive -> git
 -rwxr-xr-x 1 root root 1559256 Apr 20 10:20 /usr/bin/git-upload-pack

And /usr/bin在我的路径中:

$ echo $PATH
/home/keith/bin:/home/keith/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

我可以在没有 sudo 的情况下运行它们:

$ git-upload-pack
usage: git upload-pack [<options>] <dir>

    --stateless-rpc       quit after a single request/response exchange
    --advertise-refs      exit immediately after initial ref advertisement
    --strict              do not try <directory>/.git/ if <directory> is no Git directory
    --timeout <n>         interrupt transfer after <n> seconds of inactivity

EDIT 2:

The .gitdir 似乎也有正确的权限:

$ ls -la .git{,/objects}
.git:
total 56
drwxr-xr-x  8 keith keith 4096 Sep 21 11:36 .
drwxr-xr-x 22 keith keith 4096 Sep 21 13:09 ..
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 branches
-rw-r--r--  1 keith keith  290 Sep 21 11:36 config
-rw-r--r--  1 keith keith   73 Jul 25  2017 description
-rw-r--r--  1 keith keith    0 Sep 21 12:51 FETCH_HEAD
-rw-r--r--  1 keith keith   23 Jul 25  2017 HEAD
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 hooks
-rw-rw-r--  1 keith keith 1555 Sep 21 10:47 index
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 info
drwxr-xr-x  3 keith keith 4096 Jul 25  2017 logs
drwxr-xr-x 37 keith keith 4096 Jul 25  2017 objects
-rw-rw-r--  1 keith keith   41 Apr  2  2018 ORIG_HEAD
-rw-rw-r--  1 keith keith   46 Sep 21 10:47 packed-refs
drwxr-xr-x  5 keith keith 4096 Jul 25  2017 refs

.git/objects:
total 148
drwxr-xr-x 37 keith keith 4096 Jul 25  2017 .
drwxr-xr-x  8 keith keith 4096 Sep 21 11:36 ..
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 06
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 0a
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 17
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 22
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 29
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 2d
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 30
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 32
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 35
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 3c
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 3f
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 43
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 4f
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 50
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 53
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 5a
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 5f
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 6e
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 72
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 82
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 96
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 a5
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 a8
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 b4
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 b7
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 b9
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 bc
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 c0
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 c3
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 c9
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 cd
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 e7
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 ea
drwxr-xr-x  2 keith keith 4096 Jul 25  2017 info
drwxr-xr-x  2 keith keith 4096 Apr  2  2018 pack

EDIT 3:

我没有安装 SELinux,所以除了 linux 权限之外,我不知道要检查什么上下文。

我在看/usr/lib/git-core。所有文件(可执行文件和符号链接)均由 root 拥有,但对所有用户都具有 rx 权限。最重要的是:

$ ls -lhZ /usr/lib/git-core/{git-upload-pack,git-pack-objects} 
lrwxrwxrwx 1 root root ?    3 Apr 20 10:20 /usr/lib/git-core/git-pack-objects -> git
-rwxr-xr-x 1 root root ? 1.5M Apr 20 10:20 /usr/lib/git-core/git-upload-pack

除了这些:

$ ls -lhZ /usr/lib/git-core/git-sh-*
-rw-r--r-- 1 root root ? 2.3K Apr 20 10:20 /usr/lib/git-core/git-sh-i18n
-rwxr-xr-x 1 root root ? 1.5M Apr 20 10:20 /usr/lib/git-core/git-sh-i18n--envsubst
-rw-r--r-- 1 root root ?  16K Apr 20 10:20 /usr/lib/git-core/git-sh-prompt
-rw-r--r-- 1 root root ? 9.1K Apr 20 10:20 /usr/lib/git-core/git-sh-setup

EDIT 4:

下列的torek's 建议去检查myremote,我登录那里并检查了相同的嫌疑人:

$ ls -lhZ /usr/bin/git*
-rwxr-xr-x 1 root root ? 2.7M Apr 19 18:19 /usr/bin/git
lrwxrwxrwx 1 root root ?    3 Apr 19 18:19 /usr/bin/git-receive-pack -> git
-rwxr-xr-x 1 root root ? 1.5M Apr 19 18:19 /usr/bin/git-shell
lrwxrwxrwx 1 root root ?    3 Apr 19 18:19 /usr/bin/git-upload-archive -> git
lrwxrwxrwx 1 root root ?    3 Apr 19 18:19 /usr/bin/git-upload-pack ->  

$ ls -lhZ /usr/lib/git-core/{git-upload-pack,git-pack-objects,git}
-rwxr-xr-- 1 root root ? 2.7M Apr 19 18:19 /usr/lib/git-core/git
lrwxrwxrwx 1 root root ?    3 Apr 19 18:19 /usr/lib/git-core/git-pack-objects -> git
lrwxrwxrwx 1 root root ?    3 Apr 19 18:19 /usr/lib/git-core/git-upload-pack -> git

现在我看到了罪魁祸首。


编辑 4 有最后的线索:问题实际上出在服务器上,由于某种原因,服务器出现了/usr/lib/git-core/git二进制作为模式 754 (rwxr-xr--),而不是模式 755 (rwxr-xr-x)。这意味着任何非 root 用户、不在 root 组中的人都不允许运行它,并且一个简单的方法chmod服务器上的该二进制文件将解决该问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

git 无法执行“pack-objects”:权限被拒绝 的相关文章

  • 有谁知道类似于 SVN Time-Lapse View 的 Git 工具 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 SVN Time Lapse View 是一个跨平台查看器 可以下载文件的所有修订版本 并允许您通过拖
  • `git ls-files -s` 输出中不同字段的含义是什么?

    在 Git 中 命令返回的典型结果行git ls files s好像 100755 be2c2e9b0966253096472d4b482c458bc892e493 0 gitignore 这些字段是什么意思 不用再犹豫了git ls fi
  • 自动将所有 GitHub 存储库镜像到 gitlab

    对于 GitLab 必须手动为每个存储库设置拉 推镜像 我想知道那里有any way可以自动将所有 Github 存储库同步到 GitLab 这样 当您在 GitHub 中创建新的存储库时 GitLab 中的存储库将自动创建 并充当拉取镜像
  • Git:发送电子邮件而不提交

    我有一个项目 我做了更改 并想使用 git send email 功能将它们发送给另一个用户 我发现它可以通过发送补丁来工作 由git format patch每次提交 是否可以只发送diff的 我不想先提交 然后发送补丁 是否有gitfo
  • 格里特:! [远程拒绝] HEAD -> refs/publish/master (没有新的更改)

    我做了一些更改 提交了它们并将分支推送到 Gerrit git push gerrit 现在我的更改没有出现在 Gerrit 中 我认为这是因为我手动推送更改而不是使用git 审查 https github com openstack in
  • 第一次使用node.js - “ReferenceError:节点未定义”

    我刚刚安装了node js 我尝试编写应该检查版本的node v 但它不起作用 这是输出 gt node v ReferenceError node is not defined at repl 1 2 at REPLServer self
  • git 别名中的 AWK 语句

    我正在尝试创建一个 git 别名来以特定格式打印日志中的所有拉取请求 但是 我在使用 AWK 删除双空格时遇到问题 这是使用以下命令的 git log 的输出 git log merges grep pull request pretty
  • 在 Windows 7 上的 Sourcetree 中比较 Word docx 文件

    我一直在尝试获取在 Windows 7 上的 Sourcetree 中工作的 Word docx 文件的文本差异 我已按照此处的说明进行操作将 Microsoft Word 与 git 结合使用 http blog martinfenner
  • git 认为文件已更改

    我在一台机器上对一个项目做了一些工作 然后推送到 github 在另一台机器上克隆并做了一些工作 然后推送 然后我回到第一台机器并做了一个pull 现在 第一台机器认为项目中最初的所有文件都已更改 我试过了 git checkout f a
  • GIT:以下未跟踪的工作树文件将被签出覆盖

    我有两个分支 一个称为 master 另一个称为 dev 我目前位于 master 分支 我想转到 dev 分支将文件移动到开发服务器 但是当我执行 git checkout dev 我收到消息 以下未跟踪的工作树文件将被覆盖 查看 pag
  • 当 .gitattributes 中的 EOL 设置为 CRLF 时,Git diff 认为行结尾为 LF

    当我恢复对带有 Windows 行结尾的文件的更改并且 gitattributes 将 EOL 定义为 CRLF 时 git 认为行结尾已更改为 LR 即使十六进制编辑器显示 CRLF 仅当 gitattributes 定义 EOL 字符时
  • 创建一个空分支?

    我有一个包含项目的 git 存储库 我现在要对这个项目进行大规模的修改 如何为这次大修创建一个空白的新分支 然后当完成时 如何将这个分支切换到master 使用 checkout orphan 命令 git checkout orphan
  • 当当前分支上有未提交的更改时签出另一个分支

    大多数时候 当我尝试签出另一个现有分支时 如果我在当前分支上有一些未提交的更改 Git 会不允许我这样做 所以我必须首先提交或隐藏这些更改 然而 有时 Git 确实允许我在不提交或存储这些更改的情况下签出另一个分支 并且它会将这些更改携带到
  • 如何让 Aptana Studio 记住 git ssh 密码

    我找不到任何有关如何获得 Aptana Studio 的内置 git 支持来记住执行推 拉操作的 ssh 密码的指南 信息 有人有什么想法吗 Aptana Studio 实际上是内置的 GIT 程序 它将在 Windows 上的 C Use
  • Git 更改丢失 - 为什么?

    我们的开发团队正在使用 git 最近我们至少两次丢失了文件更改 我们正在使用私人 Github 存储库 在当前情况下 我们可以返回 Github 上的日志并查看我对文件所做的一些更新 后来 另一位团队成员更改了文件的不同部分 它似乎破坏了我
  • `git push` -- 没有输出,什么也没有发生

    touch test git add test git commit m test git push u origin master 这奏效了 该文件已上传到存储库 rm test cp R website website git rm t
  • 将更改从一个分支复制到另一个分支

    我有一个分支名为BranchA from master 我有一些改变BranchA 我不会合并来自BranchA to master 现在我创建了另一个分支master named BranchB 我如何复制更改BranchA to Bra
  • 使用 gitignore 嵌套存储库。

    我想嵌套 2 个 git 存储库 我一直在阅读子模块 有一段时间我认为它很棒 我想我可能想要其他东西 这是我的情况 首先 我想我应该提到我的所有服务器都托管网站 并以 staging domain com 和 domain com 实时 模
  • Eclipse Git 关键字扩展

    每次我检查 git hub 服务器的源代码时 我都需要更新源代码修订关键字 version date 等 你可能知道 Git 中的主要问题是你无法使用以下命令修改文件 提交后有关提交的信息 因为 Git 首先对文件进行校验 基本上我想要实现
  • 我应该把 .gitignore 放在哪里才能影响所有项目?

    我应该在哪里放置一个 gitignore文件以便我的所有项目都使用这些设置 我尝试了各种文件夹 只有将其放入项目文件夹中才能使其正常工作 但是设置 当然 仅应用于该项目 而不是我的其他项目 git 包含一个 全局 配置选项 可以告诉它在启动

随机推荐

  • 使用 java 创建 Windows 用户帐户

    是否可以使用 java 代码创建 删除 Windows 用户帐户并设置其权限以使其成为管理员帐户 简单用户帐户或来宾帐户 我问这个问题已经过去一年了 我忘了发布答案 对不起 要创建用户帐户 我们需要通过使用程序包装清单文件来获得管理权限 清
  • 如何为 Android SurfaceView 找到最佳的 PixelFormat

    我发现更改 SurfaceView 中的像素格式对帧速率有很大影响 但是 我似乎无法找到一种方法来根据每个设备选择最佳格式 Example Override public void surfaceCreated final SurfaceH
  • 如何生成数据来测试 Snowflake 处理数千列表的能力?

    Snowflake 可以处理数千列吗 有没有办法可以生成测试数据来测试 Snowflake 在处理 比方说 2000 列时的性能 使用此脚本 您可以创建一个包含 2000 或任意数量 列的表 并为每个列指定一个默认随机值 CREATE or
  • Octave/Windows:图中显示变音符号但未保存为图像

    我在Windows下使用octave 3 8 2 带有gnuplot 我想在绘图的轴标签中写入 特殊字符 变音符号 和特殊字符 显示在图中 但不会使用打印保存到图像文件中 部分地 我可以使用 TeX 命令 mu 代替 但对于变音符号 a 代
  • 如何在三个表上使用连接

    我有三张桌子 表1 表2 表3 表 1 具有列 ID Table2 具有列名 ID Name 表三具有列名称Name 现在我想从 Table2 中的 table1 中检索 ID 以便与表中的 ID 关联的名称应在表 3 中 表1 ID 表2
  • lua5.2的错误:检测到多个Lua VM

    我最近使用5 2学习 我想尝试这样的 第1步 为lua构建一个c模块 include lua h include lauxlib h include lualib h include
  • 在响应式环境中使用 rem 作为字体大小单位时,哪种后备方案最好?

    最近我想知道使用 rem 作为字体大小单位时哪种后备最好 像素似乎很合适 但如果您想更改特定媒体查询中的全局字体大小 则需要重新定义每个基于 px 的字体大小 这是一个例子 如果没有任何旧浏览器的后备 我们可以使用 Mobile Style
  • 将具有公共 id 的行压缩为一行[重复]

    这个问题在这里已经有答案了 我有一个问题尚未找到答案 有类似的问题 其解决方案在我的情况下不太有效 我有一个包含四列的数据集 如下例所示 Name Session Sequence Page Bob 001 001 home Bob 001
  • 在 python 中,如何比较两个数字字符串而不将它们转换为 int()?

    例如 在不使用 int 和 def 的情况下检查它们是否大于 小于或等于 num1 67 num2 1954 左补零 然后按字典顺序比较字符串 num1 67 num2 1954 if num1 zfill 10 lt num2 zfill
  • Java输出String和方法返回时,为什么方法返回先输出?

    在下面的代码中 如果字符串 Mult 出现在test1 4 方法调用 为什么方法输出在字符串之前 为什么它会从输出方法的第一部分跳出 然后离开方法输出字符串 然后返回到方法输出方法的返回值 code public class Scratch
  • 通过两个代理的 HttpWebRequest

    我最近建立了一个网站 它使用地理 DNS 将 DNS 解析为两个不同的 IP 具体取决于您的位置 然而 这意味着要监控网站 我需要确保该网站在两个地理位置都可用 为此 我在 net 中编写了一个小程序 不断尝试使用 HttpWebReque
  • 连接到特定 HID 配置文件蓝牙设备

    我将蓝牙条形码扫描仪连接到我的 Android 平板电脑 条码扫描仪与 Android 设备绑定作为输入设备 HID 配置文件 它在系统蓝牙管理器中显示为键盘或鼠标 我发现蓝牙配置文件输入设备类存在但被隐藏 class 和 btprofil
  • 使用 LibGDX 登录 Google

    我有问题 我正在用 LibGDX 制作游戏 现在我想实现Google登录 我到处寻找 但什么也没找到 我需要的是一个解析器来抽象特定平台的代码 但我不知道该怎么做 有人可以帮忙吗 EDIT 这是代码 这是我的 Android 解析器 pub
  • 用于在页面内创建 div 样式窗口的 JavaScript 库

    我试图找到一个好的 JavaScript 库 它可以在我网站的页面中创建一个漂亮的 内部窗口 弹出窗口 我不想担心屏幕定位 即不必计算窗口的大小是否会超出屏幕等 而只需制作一个包含内容的新弹出窗口 我将使用 NET 3 5 ASP NET
  • 使用 Plink 在另一台服务器(jumphost)后面的远程服务器上执行命令

    我正在尝试使用 Power Automate Desktop for PuTTY 进行自动化 我遇到了一个使用 cmd 来运行命令的解决方案plink 我使用了以下步骤 我将PuTTY添加到系统变量中 我使用了命令 在cmd中 plink
  • CRM 2013 中的富文本编辑器 (WYSIWYG)

    有时 CRM 界面中的 HTML 编辑器很有用 可以直接在 CRM 2013 中实现编辑器 作为编辑器 我们将使用 ckeditor 它允许在不安装在服务器上的情况下使用它 确定您想要使用富文本编辑器的字段 Create html 网络资源
  • 如何在同一时间 shell 中读取两个文件

    我有两个文件 A john 1 2 3 4 5 6 7 Ely 10 9 9 9 9 9 9 Maria 3 5 7 9 2 1 4 Rox 10 10 10 10 10 10 10 B john 7 5 Ely 4 5 Maria 3 7
  • 对 top_hits 聚合求和

    简而言之 问题是 如果我对每个存储桶的 top hits 进行聚合 如何对结果结构中的特定值求和 Details 我有许多记录 其中包含每个商店的一定数量 我想获得每个商店所有最新记录的总和 为了获取每个商店的最新记录 我创建了以下聚合 l
  • 最新 Xamarin Forms 2.2.0.45 上存在数百个 Resource.Designer.cs 构建错误

    我有一个新的 Xamarin Forms 解决方案设置 其中包含 PCL iOS 应用程序 构建良好 和 Android 项目 Android 项目已更新为 Xamarin Forms 2 2 0 45 的最新 Nuget 包 以匹配 PC
  • git 无法执行“pack-objects”:权限被拒绝

    从我刚刚添加的自托管 git 远程拉取时 我收到此错误 git pull myremote master fatal cannot exec pack objects Permission denied fatal git upload p