挑战:我有一个 Linux 手持设备,它记录数据并将其存储到磁盘中。它应该通过 USB 与 Windows 应用程序交换这些数据。当用户可以访问此数据时(例如通过 USB 大容量存储),必须对其进行加密。它应该开箱即用,适用于各种操作系统,也适用于 citrix 终端会话等。
计划:我使用FUSE在用户空间创建一个文件系统,并通过大容量存储将其提供给 Windows。每当 Windows 访问一个文件时,我都会收到一个回调并即时加密数据。此外,我们可以有一些动态内容——例如,当一些密码被写入文件时,会显示更多内容。
问题:当使用大容量存储小工具(例如g_file_storage)时,它只接受文件或块设备 - 但不接受文件系统(目录)。为什么?
[...] 它提供了一个简单的接口来读取和写入数据扇区——很像用于访问任何硬盘驱动器的低级接口 [...]。操作系统可能会将 USB 驱动器视为硬盘驱动器,并且可以使用它们喜欢的任何文件系统对其进行格式化。(来自维基百科)
所以没有机会通过大容量存储来拥有动态文件系统......这似乎是为什么我的安卓手机在连接到 PC 时会卸载手机上的所有数据的原因。
选项:
- 在用户空间中创建一个“块设备” - 类似于 FUSE(当我想动态提供文件时,需要一个反向 FAT 驱动程序)
- 实现我自己的 nbd-server 以创建块设备(还需要反向 FAT 驱动程序吗?)
- 我将加密文件保存到一个分区,并将这个分区传递给大容量存储小工具(问题是性能和缺乏动态交互)
- 不要提供大容量存储设备并注意其他想法(eth over USB)
目前,只有最后一个选项似乎是现实的 - 或者你有另一个提示给我吗?
我将感激不尽!
查理