【问题标题】:Why is "/" not owned by root during Azure Pipelines builds?为什么在 Azure Pipelines 构建期间“/”不归 root 所有?
【发布时间】:2023-03-31 08:23:02
【问题描述】:

我正在尝试调试为什么快照不在 Azure 管道构建上运行,我发现“/”在这些构建期间不归 root 所有,它归 uid 500(不是 0)所有。

有人知道为什么“/”不属于root吗?这是 Azure Pipelines 的错误吗?

例如下面的例子不起作用:

pr:
- 1.*

jobs:
- job: ldc2_snap
  timeoutInMinutes: 0
  pool:
    vmImage: ubuntu-16.04
  steps:
  - script: |
      set -x
      snap version
      lxd --version
      sudo apt-get update
      sudo snap install --classic --candidate snapcraft
      export PATH="${PATH}:/snap/bin"
      snapcraft --version
      snapcraft
    displayName: Build ldc2 snap package

这会失败,因为如果“/”不属于 root,则 snap-confine(由 snapcraft / snapd 运行)将不会运行。我们(snapd 开发人员)不希望在不理解为什么会这样的情况下允许 snap-confine 使用非 root 拥有的“/”运行,因为这似乎是 Azure Pipelines 的一个错误。

【问题讨论】:

标签: azure-devops azure-pipelines


【解决方案1】:

您可以尝试在代理 ubuntu-18.04 上运行您的管道。我可以使用代理 ubuntu-16.04 重现相同的问题。但问题似乎在代理 ubuntu-18.04 上消失了。

如果您想配置自己的自托管代理。可以参考详细步骤here

【讨论】:

【解决方案2】:

代理用完工作目录(由系统变量Pipeline.Workspace/环境变量PIPELINE_WORKSPACE定义)。您只能访问托管代理上的该工作目录。这不是错误,而是有意的限制。

如果您需要访问文件系统的根目录,请配置您自己的私有代理。

【讨论】:

  • 但是像sudo apt-get 这样安装软件呢?它可以访问工作目录之外的文件并且工作正常,只是如果“/”不属于 root,则快照无法运行(并且有一个很好的安全原因,请参阅forum.snapcraft.io/t/…
猜你喜欢
  • 2019-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-18
  • 2021-09-28
  • 2020-06-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多