是否可以在没有root权限的情况下运行pbuilder?
我意识到设置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的配置分为三个步骤:
-
配置user-mode-linux
user-mode-linux设置起来并不是一件容易的事。 在尝试使用rootstrap或pbuilder-user-mode-linux之前,先了解一下它可能会有用。 有关详细信息,请阅读
/usr/share/doc/uml-utilities/README.Debian
和user-mode-linux
文档。 (它位于一个单独的包中,user-mode-linux-doc
。)user-mode-linux要求用户在uml-net组中以配置网络,除非您使用slirp。
如果编译自己的内核,可能需要validation是否启用了TUN / TAP支持,并且可能需要考虑SKAS补丁。
-
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,则将以下条目更改为类似的内容似乎可以正常工作。运输= 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需要更少的配置。 默认配置附带一个工作示例。
-
配置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 = “/家/舞蹈演员/ UML的图像”
-
它需要匹配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作为tmpfs安装在UML中,因此从外部user-mode-linux访问/ tmp下的文件不起作用。 它影响像–configfile这样的选项,并且在尝试构建放在/ tmp下的包时。
要在系统上并行运行pbuilder-user-mode-linux,需要记住一些事项。
- 在构建正在进行时,不得运行create和update方法,否则COW文件将失效。
- 如果您不使用slirp,并行运行的user-mode-linux进程需要具有不同的IP地址。 只是尝试多次运行pbuilder-user-mode-linux将导致无法访问网络。 但是类似下面的内容将起作用:
未经测试