使用 udisks2 挂载用户可读的映像

使用 udisks2 挂载用户可读的映像

循环设备(即用于安装原始磁盘映像)可以使用 udisk 进行管理,无需 root 权限。

出于测试目的,可以像这样创建和格式化图像:

dd if=/dev/urandom of=img.img bs=1M count=16
mkfs.ext4 img.img

然后使用udisks进行设置

udisksctl loop-setup -f img.img

这会为映像创建一个循环设备,并将其安装到 下的新目录/run/$USER,就像 udisk 管理的任何本地硬盘驱动器一样。只是权限不是我所期望的。

# ls -l /run/media/$USER/
drwxr-xr-x 3 root  root   1024 Apr 10 11:19 [some id]
drwx------ 1 auser auser 12288 Oct 30  2012 [a device label]

列出的第一个是循环设备,由 root 拥有,其他任何人都不可写。第二个是挂载的本地硬盘或USB笔设备,用于比较,属于挂载的用户。我知道我可以通过简单地chmod以 root 身份执行来解决这个问题。

但为什么 udisk 会分配不同的权限和所有者呢?可以将其配置为其他用途吗?

答案1

我详细查看了udisks2源代码并在那里找到了解决方案。

在用户权限下正确安装的设备使用旧文件系统进行格式化,例如fat.这些接受uid=gid=安装选项来设置所有者。 Udisks 自动将这些选项设置为发出挂载请求的用户的用户和组 ID。

现代文件系统,如 ext 系列,没有这样的选项,而是记住根节点的所有者和模式。所以chown auser /run/media/auser/[some id]确实是坚持不懈地工作。另一种方法是将新创建的文件系统的 uid 和 gid 初始化给其创建者-E root_usermkfs.ext4

相关内容