我有一个脚本,通过运行来准备安装映像debootstrap
,对文件进行一些修改,然后将文件复制到由文件备份的磁盘映像。
这在 下工作root
,但我希望能够在没有root
特权的情况下运行脚本,因为它确实不需要任何特权资源。我以为我只需使用 运行整个脚本fakeroot
,但debootstrap
失败了
W: Failure trying to run: chroot /tmp/tmp..... mount -t proc proc /proc
有办法解决这个问题吗?
答案1
一般来说,是的,可以debootstrap
通过 的方式以非 root 用户身份运行fakeroot
,但还有更多细节。
您似乎遇到的直接问题是尝试chroot
以非 root 用户身份使用;你需要使用fakechroot
相反,除了fakeroot
.例如:
fakechroot fakeroot debootstrap sid /tmp/sid
稍后您可能会遇到的问题包括以非 root 用户身份创建环回安装或创建磁盘映像分区表。
您可能会发现使用像这样的 debootstrap 变体更容易,而不是一一处理所有这些细节多带,如果有一天您最终想要的话,它还可以处理交叉编译(例如,从 x86-64 生成 armhf 图像)。
答案2
debootstrap 有一个选项--variant=fakechroot
可以完全执行您想要执行的操作(请参阅文档)。
答案3
这chroot(2)系统调用需要 root 权限,或者更准确地说和技术上的
CAP_SYS_CHROOT
能力(请参阅能力(7))
因此你不能只使用fakeroot
它(你还需要fakechroot
ETC)。