使用 unshare 模拟 chroot

Roo*_*ies 13 chroot not-root-user namespace unshare

我正在尝试为最小的源代码 linux 发行版编写引导程序。

我想在一个类似 chroot 的环境中构建。这应该简化包装。在这一点上,我不关心安全性。引导程序不应需要任何非标准的第三方命令。如果不需要 root 那就太好了。

这就是为什么 fakechroot(1) fakeroot(1) chroot(1) 不是我正在寻找的。

是否可以伪造 / 使用 unshare(1) 和 /bin/sh?

imz*_*hev 5

是的。如果您的内核支持 user_namespaces(并且它们已启用),您可以首先“模拟 root”用户,然后该用户有权调用chroot(作为真正的 root 用户)。(以前只需要限制到 root 用户,因为普通用户可能会提升权限(例如,通过 set-UID-root 二进制文件和 chroot 目录中的自定义库)。)

你可以在你的 shell 中试试这个:

unshare --user --map-root-user --mount-proc --pid --fork
/sbin/chroot ......
su - user1
Run Code Online (Sandbox Code Playgroud)


Tob*_*obu 1

只需捆绑或安装 fakeroot/fakechroot,因为它们已经非常适合于此。查看 cdebootstrap 来获取灵感。