我有一个system.img
android 的镜像文件,里面有 ext4 文件系统。我将其挂载为
sudo mount -o ro system.img /mnt
我有两个问题:
- 为什么我需要 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 权限?
- 挂载后,如果文件系统本身没有授予用户权限,用户可能仍然无法访问挂载文件系统中的某些目录/文件。
不允许访问某些目录,如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
。