小编kir*_*sos的帖子

在非共享命名空间内挂载文件系统映像

我正在使用unshare执行诸如将本地绑定安装到某个进程而不需要 root 访问权限之类的操作,例如:

unshare -mr bash mount --bind a b
Run Code Online (Sandbox Code Playgroud)

(是的,这看起来有点愚蠢;在我的实际用例中;unshare正在运行一个执行绑定安装的 bash 脚本。我没有在这里这样做,所以它是一个较小的例子。)

但是,如果我尝试循环安装,它会失败:

ryan@DevPC-LX ~/stuff/util-linux master $ unshare -mr mount -o loop x.img a
mount: no permission to look at /dev/loop<N>
Run Code Online (Sandbox Code Playgroud)

:/

我尝试使用mknod创建一个假循环设备(需要非 root 用户无法使用的权限)、手动运行losetup(仍然需要 root 权限)以及一堆其他不起作用的东西。

当然,我可以这样做chown myuser /dev/loop*,但这似乎可能成为一个主要的安全问题。

此外,guestmount对于我的用例来说太慢了,并且fuseext2有关于写入模式下可能丢失数据的警告(而且它也太慢了)。

有没有办法做到……这个?根本?

mount loop-device namespace unshare

7
推荐指数
2
解决办法
2172
查看次数

标签 统计

loop-device ×1

mount ×1

namespace ×1

unshare ×1