是否可以在没有 root 权限的情况下运行 pbuilder?

Nat*_*man 6 root pbuilder privileges

我意识到设置pbuilder需要 root 权限,但是每次调用真的需要 root 权限吗?

有没有办法pbuilder以标准用户身份运行?

Rin*_*ind 8

是的,复制自:pbuilder

可以通过调用 pbuilder-user-mode-linux 而不是 pbuilder 来使用 user-mode-linux。pbuilder-user-mode-linux 不需要 root 权限,它使用 User-mode-linux 的写时复制 (COW) 磁盘访问方法,这通常使它比传统的 pbuilder 快得多。

与 pbuilder 依赖的标准 Unix 工具(chroot、tar 和 gzip)相比,User-mode-linux 是一个不太成熟的平台,但自 0.59 版以来已经足够成熟以支持 pbuilder-user-mode-linux。从那时起,pbuilder-user-mode-linux 经历了快速的发展。

pbuilder-user-mode-linux 的配​​置分为三步:

  1. user-mode-linux 的配​​置

    user-mode-linux 设置起来并不简单。在尝试使用 rootstrap 或 pbuilder-user-mode-linux 之前,先熟悉一下它可能会很有用。有关详细信息,请阅读/usr/share/doc/uml-utilities/README.Debianuser-mode-linux文档。(它在一个单独的包中,user-mode-linux-doc。)

    除非您使用 slirp,否则 user-mode-linux 要求用户在 uml-net 组中才能配置网络。

    如果您编译自己的内核,您可能需要验证是否启用了 TUN/TAP 支持,并且您可能需要考虑 SKAS 补丁。

  2. 根带的配置

    rootstrap 是 debootstrap 的包装器。它创建一个用于 UML 的 Debian 磁盘映像。要配置 rootstrap,有几个要求。

    • 安装 rootstrap 包。
    • 仅 TUN/TAP:将用户添加到 uml-net 组以允许访问网络 adduser dancer uml-net
    • 仅 TUN/TAP:检查内核是否支持 TUN/TAP 接口,或在必要时重新编译内核。
    • 设置/etc/rootstrap/rootstrap.conf。例如,如果当前主机是 192.168.1.2,将以下条目更改为这样的内容似乎可以工作。

      运输=tuntap
      接口=eth0
      网关=192.168.1.1
      镜像=http://192.168.1.2:8081/debian
      主机=192.168.1.198
      uml=192.168.1.199
      网络掩码=255.255.255.0

    一些配置实验和运行 rootstrap ~/test.uml 来实际测试它会很方便。

    使用 slirp 需要较少的配置。默认配置带有一个工作示例。

  3. pbuilder-uml 的配置

    需要发生以下情况:

    • 安装pbuilder-uml软件包。
    • /etc/pbuilder/pbuilder-uml.conf按照以下方式设置配置文件。slirp 会有所不同。

      MY_ETH0=tuntap,,,,192.168.1.198
      UML_IP=192.168.1.199
      UML_NETMASK=255.255.255.0
      UML_NETWORK=192.168.1.0
      UML_BROADCAST=255.255.255.255
      UML_GATEWAY=192.168.1.1
      PBUILDER_UML_IMAGE="/home/dancer/uml-image"
    • 它需要匹配rootstrap 配置。

    • 确保 BUILDPLACE 可由用户写入。把配置文件中的BUILDPLACE改成用户可以访问的地方。
    • 运行pbuilder-user-mode-linux create --distribution sid以创建图像。
    • 尝试运行 pbuilder-user-mode-linux build。

链接中的额外评论:

pbuilder-user-mode-linux 模拟大部分 pbuilder,但有一些差异。

  • pbuilder-user-mode-linux 尚不能正确支持 pbuilder 的所有选项。这是一个问题,将在发现特定区域时得到解决。
  • /tmp 在 pbuilder-user-mode-linux 中的处理方式不同。在 pbuilder-user-mode-linux 中,/tmp 在 UML 中作为 tmpfs 挂载,因此从外部 user-mode-linux 访问 /tmp 下的文件不起作用。它会影响 --configfile 之类的选项,以及在尝试构建放置在 /tmp 下的包时。

要在系统上并行运行 pbuilder-user-mode-linux,需要记住一些事情。

  • 在构建过程中不得运行 create 和 update 方法,否则 COW 文件将失效。
  • 如果您不使用 slirp,则并行运行的 user-mode-linux 进程需要具有不同的 IP 地址。只是尝试多次运行 pbuilder-user-mode-linux 会导致无法访问网络。但类似以下内容将起作用:

未经测试