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

Modified on: Sat, 09 Jun 2018 14:27:53 +0800

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

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

最佳答案

是的,复制自:pbuilder

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

User-mode-linux是一个比pbuilder依赖的标准Unix工具(chroot,tar和gzip)稍微不那么成熟的平台,但是从0.59版开始就足以支持pbuilder-user-mode-linux。从那以后,pbuilder-user-mode-linux出现了快速发展。

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

  1. 用户配置-mode Linux的

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

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

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

  2. rootstrap的配置

    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,则将以下条目更改为类似的内容似乎可以正常工作。

      transport=tuntap
      interface=eth0
      gateway=192.168.1.1
      mirror=http://192.168.1.2:8081/debian
      host=192.168.1.198
      uml=192.168.1.199
      netmask=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。
  4. 醇>

    链接中的额外评论:

    pbuilder-user-mode-linux模仿大部分pbuilder,但存在一些差异。

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

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

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

未测试子>

作者:Rinzwind

相关问答

添加新评论