Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

libfuse - macFUSE user space library

License

GPL-2.0, LGPL-2.1 licenses found

Licenses found

GPL-2.0
COPYING
LGPL-2.1
COPYING.LIB
NotificationsYou must be signed in to change notification settings

macfuse/library

Repository files navigation

Warning: unresolved security issue

Be aware that FUSE has an unresolved security bug(bug #15): thepermission check for accessing a cached directory is only done oncewhen the directory entry is first loaded into the cache. Subsequentaccesses will re-use the results of the first check, even if thedirectory permissions have since changed, and even if the subsequentaccess is made by a different user.

This bug needs to be fixed in the Linux kernel and has been knownsince 2006 but unfortunately no fix has been applied yet. If youdepend on correct permission handling for FUSE file systems, the onlyworkaround is to completely disable caching of directoryentries. Alternatively, the severity of the bug can be somewhatreduced by not using theallow_other mount option.

About

FUSE (Filesystem in Userspace) is an interface for userspace programsto export a filesystem to the Linux kernel. The FUSE project consistsof two components: thefuse kernel module (maintained in the regularkernel repositories) and thelibfuse userspace library (maintainedin this repository). libfuse provides the reference implementationfor communicating with the FUSE kernel module.

A FUSE file system is typically implemented as a standaloneapplication that links with libfuse. libfuse provides functions tomount the file system, unmount it, read requests from the kernel, andsend responses back. libfuse offers two APIs: a "high-level",synchronous API, and a "low-level" asynchronous API. In both cases,incoming requests from the kernel are passed to the main program usingcallbacks. When using the high-level API, the callbacks may work withfile names and paths instead of inodes, and processing of a requestfinishes when the callback function returns. When using the low-levelAPI, the callbacks must work with inodes and responses must be sentexplicitly using a separate set of API functions.

Installation

./configuremake -j8make install

You may also need to add/usr/local/lib to/etc/ld.so.conf and/orrunldconfig. If you're building from the git repository (instead ofusing a release tarball), you also need to run./makeconf.sh tocreate theconfigure script.

You'll also need a fuse kernel module (Linux kernels 2.6.14 or latercontain FUSE support).

For more details see the fileINSTALL

Security implications

If you runmake install, thefusermount program is installedset-user-id to root. This is done to allow normal users to mounttheir own filesystem implementations.

There must however be some limitations, in order to prevent Bad User fromdoing nasty things. Currently those limitations are:

  • The user can only mount on a mountpoint, for which it has writepermission

  • The mountpoint is not a sticky directory which isn't owned by theuser (like /tmp usually is)

  • No other user (including root) can access the contents of themounted filesystem (though this can be relaxed by allowing the useof theallow_other andallow_root mount options infuse.conf)

Building your own filesystem

FUSE comes with several example file systems in theexamplesdirectory. For example, thefusexmp example mirrors the contents ofthe root directory under the mountpoint. Start from there and adaptthe code!

The documentation of the API functions and necessary callbacks ismostly contained in the filesinclude/fuse.h (for the high-levelAPI) andinclude/fuse_lowlevel.h (for the low-level API). Anautogenerated html version of the API is available in thedoc/htmldirectory and athttp://libfuse.github.io/doxygen.

Getting Help

If you need help, please ask on thefuse-devel@lists.sourceforge.netmailing list (subscribe athttps://lists.sourceforge.net/lists/listinfo/fuse-devel).

Please report any bugs on the GitHub issue tracker athttps://github.com/libfuse/main/issues.

About

libfuse - macFUSE user space library

Topics

Resources

License

GPL-2.0, LGPL-2.1 licenses found

Licenses found

GPL-2.0
COPYING
LGPL-2.1
COPYING.LIB

Stars

Watchers

Forks

Contributors5

Languages


[8]ページ先頭

©2009-2025 Movatter.jp