如何在每个进程的基础上挂载文件夹,同时保留常规 shell 的所有功能

如何在每个进程的基础上挂载文件夹,同时保留常规 shell 的所有功能

为了在非 FHS 操作系统(NixOs)上伪造 FHS 操作系统并增加“纯度”,我需要在每个进程的基础上安装一些文件夹并覆盖其他文件夹,例如/libNixOs 中不存在的文件夹,我'我想为某些应用程序提供这样的文件夹(我不想全局安装它)。同样,我想覆盖该/bin文件夹:它只包含/bin/sh并且我想链接其他可执行文件,例如/bin/bash.

理想情况下,我希望有一个命令来安装/覆盖适当的文件夹,并将我放入具有与普通 shell 相同功能的 shell 中。尤其我应该能够运行 sudo 或普通命令,运行 fusionmount 命令(特别是运行应用程序图像),访问网络......

理想情况下,该命令应该是以非 root 用户身份执行。如果可能的话,我很乐意使用命名空间使其在没有任何 suid 二进制文件的情况下工作,但如果我没有任何选择,我可以依赖 setuid (如果它不会破坏系统其余部分的安全性) ,或者,如果没有其他选择,则使用 sudo。

我尝试使用用户命名空间 + 挂载命名空间 + chroot,不幸的是,这里我无法运行 sudo 应用程序,因为命名空间隐藏了 root 帐户(参见用户命名空间:如何仅为给定程序安装文件夹)。其他工具(如 bubblewrap)无法运行 fusionmount 命令。还有其他解决方案吗?

相关内容