在 Linux 上无需提升权限即可将文件系统挂载到本地目录的解决方法

在 Linux 上无需提升权限即可将文件系统挂载到本地目录的解决方法

我有一个位于文件中的 ext3 文件系统,我想将其挂载到本地目录,而无需 sudo 或任何提升的权限。为什么?我正在创建一个小型文件系统以进行自动测试。自动测试在我无法控制的机器上运行,因此将挂载添加到 sudoers 会遇到一些障碍。

以下是我创建文件系统的方法:

$ dd if=/dev/zero of=./50MB_partition count=102400
$ mkfs.ext3 -F 50MB_partition

如果我获得许可,我现在可以像这样安装它:

$ mkdir small_partition
$ sudo mount 50MB_partition ./small_partition

看起来,因为我拥有文件系统和挂载点,所以允许我挂载它不会带来任何安全风险。我明白是什么限制了我在没有 sudo 的情况下调用 mount;这里不需要解释。我想知道的是,是否有一种解决方法可以让我将我的文件系统用于测试目的?

答案1

mount 需要 mount() [在 sys/mount.h 中定义],而它又需要 CAP_SYS_ADMIN,因此如果没有 fstab 条目或 sudo,您就无法使用 mount()。

可能需要研究一下 fuse(用户空间中的文件系统)[http://fuse.sourceforge.net/]

答案2

有一个 mount 选项可以执行此操作,owner它也意味着其他选项可以防止安全违规。

owner

如果普通用户(即非 root 用户)是设备的所有者,则允许他挂载文件系统。此选项隐含选项nosuidnodev(除非被后续选项覆盖,如选项行中所示 owner,dev,suid)。

问题是它要求“设备”归您所有。在这种情况下没有设备。设备 (/dev/loopx) 由 mount 自动设置,这需要 root 权限,因此该设备不归您所有。

不确定如何解决这个问题,除非您可以让 root 用户使用 losetup,然后将循环设备 chown 给您。

也可能需要提及这一点/etc/fstab才能owner接受该选项。我不确定,因为我的手册页中没有记录这一点,而且我还没有尝试过。

相关内容