非 root 设备上的 Android 用户空间文件系统驱动程序?

问题描述 投票:0回答:4

我可以编写一个自定义用户空间文件系统可以通过标准可用实用程序在无根工厂设备上运行吗?

我知道fuse-android的存在,但据我所知,它需要有root权限的设备。如果不是这样,请纠正我。

我试图实现的目标是创建一个实际上挂载到文件的“假”FS。

android android-ndk filesystems fuse
4个回答
15
投票

前一段时间我也有同样的需求,但我不得不承认这根本不可能(大部分)。为 android 构建 libfuse 应该不是问题,Java 包装器也没有问题。

真正的问题是,我见过的大多数系统都不是使用熔断器支持构建的,也不提供可以加载的模块(这需要 root,但无论如何)。

您可以通过读取/proc/filesystems轻松了解fuse是否启用。它应该列出保险丝,否则你将需要 root。但很可能大多数 Android 设备都是在没有熔丝支持的情况下构建的。

我的其他想法是使用另一个文件系统来“伪造”诸如保险丝之类的东西。这可以通过 nfs 或其他一些网络文件系统实现,您可以在其中自行实现服务器。这可以让你写一个假保险丝,但我认为这不值得。

编辑: 即使许多设备具有熔丝支持内置机会很高,它们也不会让您以用户身份安装它,您将需要 root 访问权限,因为您的应用程序没有安装熔丝文件系统的权限。


2
投票

Luminger 的想法几乎是正确的。以下是我在 Galaxy S3(Verizon 上)上发现的内容:

/proc/filesystems 中确实存在适当的熔断器。所以有东西一定在使用它,很可能是系统。但是,当我尝试执行“fusermount”时,我收到“无法执行 - 权限被拒绝。”

看起来所有的 FUSE 东西都在那里,但我不知道是否可以直接使用它(dropbox?sshfs?)而不需要 root 设备。


1
投票

这取决于您的实施。在我看来,您想要拥有一个代表完整用户空间文件系统的物理文件。也许类似于已安装的 .iso。如果是这种情况,我想不出任何需要 root 的原因:您只需在 /sdcard/ 等位置创建/安装该文件,然后在其上“安装”您的文件系统即可。

也就是说,如果您希望从您无法控制的其他应用程序访问所述文件系统,则需要 root 权限,否则您的应用程序将在 Android 沙箱中运行。


0
投票

是的,你绝对可以。 在 Android 用户存储中运行的融合文件系统包括用户的克隆

[注意,相同的开发工具报告的设备上没有 root 权限 2ng 运行 Android 12 的非 root 设备 blu 平板电脑,非特权用户在用户存储空间中运行融合文件系统,运行用户操作系统的克隆,使熔断器能够完全不受拒绝地访问完全未被发现的控制..🤔😉

© www.soinside.com 2019 - 2024. All rights reserved.