4
FUSE (Filesystem in Userspace) is a simple interface for userspace
5
programs to export a virtual filesystem to the linux kernel. FUSE
6
also aims to provide a secure method for non privileged users to
7
create and mount their own filesystem implementations.
9
You can download the source code releases from
11
http://sourceforge.net/projects/fuse
13
or alternatively you can use CVS to get the very latest development
14
version by setting the cvsroot to
16
:pserver:anonymous@cvs.sourceforge.net:/cvsroot/fuse
18
and checking out the 'fuse' module.
28
You may also need to add '/usr/local/lib' to '/etc/ld.so.conf' and/or
31
For more details see the file 'INSTALL'
36
FUSE is made up of three main parts:
38
- A kernel filesystem module
42
- A mount/unmount program
45
Here's how to create your very own virtual filesystem in five easy
46
steps (after installing FUSE):
48
1) Edit the file example/fusexmp.c to do whatever you want...
50
2) Build the fusexmp program
52
3) run 'example/fusexmp /mnt/fuse -d'
58
If it doesn't work out, please ask! Also see the file 'include/fuse.h' for
59
detailed documentation of the library interface.
64
If you run 'make install', the fusermount program is installed
65
set-user-id to root. This is done to allow normal users to mount
66
their own filesystem implementations.
68
There must however be some limitations, in order to prevent Bad User from
69
doing nasty things. Currently those limitations are:
71
- The user can only mount on a mountpoint, for which it has write
74
- The mountpoint is not a sticky directory which isn't owned by the
75
user (like /tmp usually is)
77
- No other user (including root) can access the contents of the mounted
83
Some options regarding mount policy can be set in the file
86
Currently these options are:
90
Set the maximum number of FUSE mounts allowed to non-root users.
95
Allow non-root users to specify the 'allow_other' or 'allow_root'
102
These are FUSE specific mount options that can be specified for all
107
By default FUSE doesn't check file access permissions, the
108
filesystem is free to implement it's access policy or leave it to
109
the underlying file access mechanism (e.g. in case of network
110
filesystems). This option enables permission checking, restricting
111
access based on file mode. This is option is usually useful
112
together with the 'allow_other' mount option.
116
This option overrides the security measure restricting file access
117
to the user mounting the filesystem. This option is by default only
118
allowed to root, but this restriction can be removed with a
119
configuration option described in the previous section.
123
This option is similar to 'allow_other' but file access is limited
124
to the user mounting the filesystem and root.
128
This option disables flushing the cache of the file contents on
129
every open(). This should only be enabled on filesystems, where the
130
file data is never changed externally (not through the mounted FUSE
131
filesystem). Thus it is not suitable for network filesystems and
132
other "intermediate" filesystems.
134
NOTE: if this option is not specified (and neither 'direct_io') data
135
is still cached after the open(), so a read() system call will not
136
always initiate a read operation.
140
Issue large read requests. This can improve performance for some
141
filesystems, but can also degrade performance. This option is only
142
useful on 2.4.X kernels, as on 2.6 kernels requests size is
143
automatically determined for optimum performance.
147
This option disables the use of page cache (file content cache) in
148
the kernel for this filesystem. This has several affects:
150
- Each read() or write() system call will initiate one or more
151
read or write operations, data will not be cached in the
154
- The return value of the read() and write() system calls will
155
correspond to the return values of the read and write
156
operations. This is useful for example if the file size is not
157
known in advance (before reading it).
161
With this option the maximum size of read operations can be set.
162
The default is infinite. Note that the size of read requests is
163
limited anyway to 32 pages (which is 128kbyte on i386).
167
The default behavior is that if an open file is deleted, the file is
168
renamed to a hidden file (.fuse_hiddenXXX), and only removed when
169
the file is finally released. This relieves the filesystem
170
implementation of having to deal with this problem. This option
171
disables the hiding behavior, and files are removed immediately in
172
an unlink operation (or in a rename operation which overwrites an
177
Turns on debug information printing by the library.
181
Sets the filesystem name. The default is the program name.