以普通用户身份挂载和卸载 UDF .iso 映像

以普通用户身份挂载和卸载 UDF .iso 映像

我不久前发现,但我需要挂载 UDF 映像,在我尝试挂载 UDF 映像失败后,它fuseiso似乎不支持它。fuseiso我需要能够以普通用户的身份对任意图像执行此操作,并且我还必须能够卸载它们,最好将安装点范围限制在特定用户目录内(假设这不是问题,例如/home/user/mounted/*),所以直接使用mount是不行的。有办法做到这一点吗?

我在 Ubuntu 上,在调查这个问题时我发现了这一点,pmount但它似乎不符合我的需求,因为 1) 我正在尝试挂载文件.iso而不是/dev块设备 2) 我无法挂载它位于用户位置(这样我就可以作为用户卸载它,例如通过使用fusermount -u它是否是熔丝文件系统)。

POLICY
   The mount will succeed if all of the following conditions are met:

   · device is a block device in /dev/

   · device is not in /etc/fstab (if it is, pmount executes  mount device as the  calling  user  to  handle  this
     transparently). See below for more details.

   · device is not already mounted according to /etc/mtab and /proc/mounts

   · if the mount point already exists, there is no device already mounted at it and the directory is empty

   · device  is  removable  (USB,  FireWire, or MMC device, or /sys/block/drive/removable is 1) or whitelisted in
     /etc/pmount.allow.

   · device is not locked

什么是任何我有什么选择?在最糟糕和最令人沮丧的情况下,我想作为最后的手段,我将能够编写一个自定义 setuid 脚本来完成此任务?但我希望我不必冒这个风险。

答案1

我使用udisksctl loop-setup -f /full/path/to/isoudisks2 包中的那个。

udisksctl loop-setup -f /media/myname/dvd/avatar/buch-1/AVATAR_BK1_VOL1_EUR.iso
    Mapped file /media/myname/dvd/avatar/buch-1/AVATAR_BK1_VOL1_EUR.iso as /dev/loop1.

它将 iso 安装在 /media/$USER/ 中。

如果没有,您还需要输入udisksctl mount -b /dev/loop1

$ mount | grep udf
/media/myname/dvd/avatar/buch-1/AVATAR_BK1_VOL1_EUR.iso on /media/myname/AVATAR_BK1_VOL1_EUR type udf (ro,nosuid,nodev,relatime,uid=1000,gid=1000,iocharset=utf8,uhelper=udisks2)

udisksctl unmount -b /dev/loop1如果 iso 映射到 /dev/loop1 上,则卸载。

也应该在没有 GUI 的情况下工作。

答案2

在您没有挂载权限的情况下,可以使用7zip提取 UDF ISO 文件。

虽然它与安装并不完全相同,但它可能已经足够了。如果需要,您甚至可以应用修改并用于genisoimage重新创建 UDF ISO(包括您的修改)。

相关内容