如何将 .img 文件挂载为只读 ext4,但授予用户对整个 fs 的读取权限?

如何将 .img 文件挂载为只读 ext4,但授予用户对整个 fs 的读取权限?

我有一个system.imgandroid 的镜像文件,里面有 ext4 文件系统。我将其挂载为

sudo mount -o ro system.img /mnt

我有两个问题:

  1. 为什么我需要 root 权限才能挂载映像文件?

以用户身份挂载图像文件出现以下错误:

mount: /mnt: mount failed: Permission denied.

system.img由于用户是文件的所有者,因此该用户具有完全访问权限:

ls -l system.img
-rwxr-xr-x 1 user users 4877225984 Apr 12 19:13 system.img

即使用户是我尝试挂载映像的目录的所有者,该用户也没有权限挂载映像文件,如下所示:

$ mkdir system_mount
$ mount -o ro system.img system_mount
mount: system_mount: mount failed: Permission denied.
$ ls -l
drwxr-xr-x 2 user users       4096 Apr 12 19:38  system_mount 

那么为什么安装总是需要 root 权限?

  1. 挂载后,如果文件系统本身没有授予用户权限,用户可能仍然无法访问挂载文件系统中的某些目录/文件。

不允许访问某些目录,如init.container.rc文件(others没有权限):

-rwxr-x---  1 root 2000  3583 Dec 31  2008 init.container.rc

尝试获取该文件的内容失败:

$ cat /mnt/init.container.rc
cat: /mnt/init.container.rc: Permission denied

我仍然可以以 root 身份访问该目录。如果系统已安装为可写,我也可以以用户身份访问它chmod -R 755。但事实并非如此,当我使用 chmod 命令时,我收到以下错误:

chmod: changing permissions of '/mnt/d/tracing': Read-only file system

我想授予用户对整个文件系统的临时读取权限,而无需修改文件system.img(将其安装为只读),而无需实际更改文件系统中的权限。

我怎样才能做到这一点?

答案1

Kamil Maciorowski 的解决方案是使用fuse2fs

相关内容