我有一个位于文件中的 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 用户)是设备的所有者,则允许他挂载文件系统。此选项隐含选项
nosuid
和nodev
(除非被后续选项覆盖,如选项行中所示owner,dev,suid
)。
问题是它要求“设备”归您所有。在这种情况下没有设备。设备 (/dev/loopx) 由 mount 自动设置,这需要 root 权限,因此该设备不归您所有。
不确定如何解决这个问题,除非您可以让 root 用户使用 losetup,然后将循环设备 chown 给您。
也可能需要提及这一点/etc/fstab
才能owner
接受该选项。我不确定,因为我的手册页中没有记录这一点,而且我还没有尝试过。