Go to file
2004-03-30 07:24:29 +00:00
debian updated Debian packaging: 2003-10-07 16:08:58 +00:00
example statfs fixes 2004-02-19 14:23:27 +00:00
include kernel interface changes 2004-03-02 11:11:24 +00:00
kernel fix 2004-03-24 09:19:27 +00:00
lib fusermount fix 2004-03-30 07:24:29 +00:00
lufis default statfs 2004-03-25 11:17:52 +00:00
patch upgrade patch to latest kernel 2004-02-18 13:29:36 +00:00
perl seems the arguments for fuse_mount() have changed slightly. 2003-07-18 13:59:44 +00:00
python Changed the '#include <fuse.h>' to '#include "fuse.h"' to allow symlinking 2003-12-22 23:26:52 +00:00
util fusermount fix 2004-03-30 07:24:29 +00:00
.cvsignore cvsignore fixes 2002-10-07 10:27:45 +00:00
AUTHORS perl bindings 2001-12-03 08:35:41 +00:00
BUGS permission checking implemented 2001-12-20 15:38:05 +00:00
ChangeLog fusermount fix 2004-03-30 07:24:29 +00:00
configure.in don't check i_size_read() on 2.6.X 2004-02-10 10:57:35 +00:00
COPYING build with automake 2001-11-07 12:09:43 +00:00
COPYING.LIB version change + cleanups 2002-10-25 12:41:16 +00:00
Filesystems fusermount fix 2004-03-30 07:24:29 +00:00
fuse.spec specfile fix 2003-06-02 06:12:27 +00:00
INSTALL build with automake 2001-11-07 12:09:43 +00:00
makeconf.sh use fuse_mount in fuse_main 2002-10-25 11:40:14 +00:00
Makefile.am *** empty log message *** 2004-01-26 16:05:34 +00:00
NEWS *** empty log message *** 2004-01-26 14:43:12 +00:00
README fix 2004-02-25 08:39:42 +00:00
README-2.4 integrated 2.6 kernel support 2004-01-07 12:16:45 +00:00
README-2.6 integrated 2.6 kernel support 2004-01-07 12:16:45 +00:00
README.NFS fix 2004-01-26 11:28:44 +00:00
TODO Added statfs support to kernel, lib, examples, and perl 2002-01-07 16:32:02 +00:00

General Information
===================

FUSE (Filesystem in USErspace) is a simple interface for userspace
programs to export a virtual filesystem to the linux kernel.  FUSE
also aims to provide a secure method for non privileged users to
create and mount their own filesystem implementations.

You can download the source code releases from

  http://sourceforge.net/projects/avf

or alternatively you can use CVS to get the very latest development
version by setting the cvsroot to

  :pserver:anonymous@cvs.avf.sourceforge.net:/cvsroot/avf

and checking out the 'fuse' module.

Installation
============

See the file 'INSTALL'

IMPORTANT NOTE: If you run a system with untrusted users, installing
this program is not recommended, as it could be used to breach
security (see the 'Security' section for explanation).

How To Use
==========

FUSE is made up of three main parts:

 - A kernel filesystem module (kernel/fuse.o)

 - A userspace library (lib/libfuse.a)

 - A mount/unmount program (util/fusermount)


Here's how to create your very own virtual filesystem in five easy
steps (after installing FUSE):

  1) Edit the file example/fusexmp.c to do whatever you want...

  2) Build the fusexmp program

  3) run 'example/fusexmp /mnt/whatever -d'

  4) ls -al /mnt/whatever

  5) Be glad

If it doesn't work out, please ask!  Also see the file 'include/fuse.h' for
detailed documentation of the library interface.

The fusermount program accepts a couple of additional options (see
'fusermount -h').  You can add these options after a '--' like this:

   example/fusexmp /mnt/whatever -d -- -l

Security
========

If you run 'make install', the fusermount program is installed
set-user-id to root.  This is done to allow normal users to mount
their own filesystem implementations. 

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

  - The user can only mount on a mountpoint, for which it has write
    permission

  - The mountpoint is not a sticky directory which isn't owned by the
    user (like /tmp usually is)

  - No other user (including root) can access the contents of the mounted
    filesystem.

Currently the first two conditions are checked by the fusermount
program before doing the mount.  This is in fact not perfectly secure,
since there is a window of time, after fusermount has checked the
mountpoint and before the mount actually takes place, when the user is
able to change the mountpoint (e.g. by changing symbolic links). 

The preferred method would be if the kernel would check the
permissions.  There is a patch for this for the 2.6.X kernel (where X
>= 3) in the patch directory.  If you apply this patch then the suid
bit can be removed from the fusermount program.

Comments about this are appreciated.