Why use fuse filesystem
Oh well. The idea here is that if you can envision your interaction with an object in terms of a directory structure and filesystem operations, you can write a FUSE file system to provide that interaction. You just write code that implements file operations like open , read , and write ; when your filesystem is mounted, programs are able to access the data using the standard file operation system calls, which call your code.
The possibilities are only limited by your imagination! A FUSE file system is typically implemented as a standalone application that links with libfuse. In both cases, incoming requests from the kernel are passed to the main program using callbacks. When using the high-level API, the callbacks may work with file names and paths instead of inodes, and processing of a request finishes when the callback function returns.
When using the low-level API, the callbacks must work with inodes and responses must be sent explicitly using a separate set of API functions. However, at present libfuse does not have any active, regular contributors. The current maintainer continues to apply pull requests and makes regular releases, but unfortunately has no capacity to do any development beyond addressing high-impact issues.
When reporting bugs, please understand that unless you are including a pull request or are reporting a critical issue, you will probably not get a response.
If you are using libfuse, please consider contributing to the project. To build and install, you must use Meson and Ninja. After extracting the libfuse tarball, create a temporary build directory and run Meson:.
Normally, the default build options will work fine. If you nevertheless want to adjust them, you can do so with the meson configure command:.
Running the tests requires the py. The fusermount3 program is installed setuid root. This is done to allow normal users to mount their own filesystem implementations. To limit the harm that malicious users can do this way, fusermount3 enforces the following limitations:. If the request is not yet sent to userspace AND the signal is not fatal, then an interrupted flag is set for the request. There are two possibilities:. It is possible to get into certain situations where the filesystem is not responding.
Reasons for this may be:. In either of these cases it may be useful to abort the connection to the filesystem. There are several ways to do this:. Kill the filesystem daemon and all users of the filesystem. Works in all cases except some malicious deadlocks. Use forced umount umount -f. Since the mount system call is a privileged operation, a helper program fusermount is needed, which is installed setuid root. The implication of providing non-privileged mounts is that the mount owner must not be able to use this capability to compromise the system.
Obvious requirements arising from this are:. The solution is not to allow opening device files and ignore setuid and setgid bits when executing programs.
If another user is accessing files or directories in the filesystem, the filesystem daemon serving requests can record the exact sequence and timing of operations performed. This information is otherwise inaccessible to the mount owner, so this counts as an information leak.
It can slow down or indefinitely delay the execution of a filesystem operation creating a DoS against the user or the whole system. It can present files or directories of unlimited length, or directory structures of unlimited depth, possibly causing a system process to eat up diskspace, memory or other resources, again causing DoS.
In-kernel filesystems are better suited for main filesystems for programs and data: They can be used on boot media the program implementing a FUSE filesystem has to be loaded from somewhere. They're more robust, in that they won't go away due to a process crashing or being killed by mistake. They're somewhat faster. FUSE filesystems have other advantages, mostly revolving around their flexibility: They can be loaded and mounted by ordinary users, so they're convenient for file systems that users tend to mount by themselves: for network access, for going through archive files, for removable media, etc.
They can be programmed very quickly; there are FUSE bindings for many scripting languages where a useful FUSE filesystem driver can be written in a few hundred lines of code.
They can be deployed very quickly, both because there is no need for administrator intervention to install them and because they can be ported easily between supported OSes.
There are no licensing issues related to being statically linked with a kernel this is affecting zfs. Improve this answer. Gilles 'SO- stop being evil' Gilles 'SO- stop being evil' k gold badges silver badges bronze badges.
Stephen Rauch 3, 14 14 gold badges 19 19 silver badges 32 32 bronze badges. Michael Mrozek Michael Mrozek 84k 31 31 gold badges silver badges bronze badges. Where did you find that app?!?!
0コメント