FreeBSD manual
download PDF document: mount_fusefs.8.pdf
MOUNT_FUSEFS(8) FreeBSD System Manager's Manual MOUNT_FUSEFS(8)
NAME
mount_fusefs - mount a Fuse file system daemon
SYNOPSIS
mount_fusefs [-A] [-S] [-v] [-D fuse_daemon] [-O daemon_opts]
[-s special] [-m node] [-h] [-V] [-o option ...]
special node [fuse_daemon ...]
DESCRIPTION
Basic usage is to start a fuse daemon on the given special file. In
practice, the daemon is assigned a special file automatically, which can
then be identified via fstat(1). That special file can then be mounted
by mount_fusefs.
However, the procedure of spawning a daemon will usually be automated so
that it is performed by mount_fusefs. If the command invoking a given
fuse_daemon is appended to the list of arguments, mount_fusefs will call
the fuse_daemon via that command. In that way the fuse_daemon will be
instructed to attach itself to special. From that on mounting goes as in
the simple case. (See DAEMON MOUNTS.)
The special argument will normally be treated as the path of the special
file to mount.
However, if auto is passed as special, then mount_fusefs will look for a
suitable free fuse device by itself.
Finally, if special is an integer it will be interpreted as the number of
the file descriptor of an already open fuse device (used when the Fuse
library invokes mount_fusefs. See DAEMON MOUNTS).
The options are as follows:
-A, --reject-allow_other
Prohibit the allow_other mount flag. Intended for use in scripts
and the sudoers(5) (ports/security/sudo) file.
-S, --safe
Run in safe mode (i.e., reject invoking a filesystem daemon).
-v Be verbose.
-D, --daemon daemon
Call the specified daemon.
-O, --daemon_opts opts
Add opts to the daemon's command line.
-s, --special special
Use special as special.
-m, --mountpath node
Mount on node.
-h, --help
Show help.
allow_other
Do not apply STRICT ACCESS POLICY. Only root can use
this option.
async I/O to the file system may be done asynchronously.
Writes may be delayed and/or reordered.
default_permissions
Enable traditional (file mode based) permission checking
in kernel.
intr Allow signals to interrupt operations that are blocked
waiting for a reply from the server. When this option is
in use, system calls may fail with EINTR whenever a
signal is received.
max_read=n
Limit size of read requests to n.
neglect_shares
Do not refuse unmounting if there are secondary mounts.
private
Refuse shared mounting of the daemon. This is the
default behaviour, to allow sharing, explicitly use -o
noprivate.
push_symlinks_in
Prefix absolute symlinks with the mountpoint.
subtype=fsname
Suffix fsname to the file system name as reported by
statfs(2). This option can be used to identify the file
system implemented by fuse_daemon.
Besides the above mount options, there is a set of pseudo-mount options
which are supported by the Fuse library. One can list these by passing
-h to a Fuse daemon. Most of these options only have effect on the
behavior of the daemon (that is, their scope is limited to userspace).
However, there are some which do require in-kernel support. Currently
the options supported by the kernel are:
direct_io
Bypass the buffer cache system.
kernel_cache
By default cached buffers of a given file are flushed at each
open(2). This option disables this behaviour.
DAEMON MOUNTS
Usually users do not need to use mount_fusefs directly, as the Fuse
library enables Fuse daemons to invoke mount_fusefs. That is,
fuse_daemon device mountpoint
has the same effect as
mount_fusefs auto mountpoint fuse_daemon
This is applied for Fuse mounts by default and only root can mount
without the strict access policy (i.e., the allow_other mount option).
This is to shield users from the daemon "spying" on their I/O activities.
Users might opt to willingly relax strict access policy (as far as they
are concerned) by doing their own secondary mount (See SHARED MOUNTS).
SHARED MOUNTS
A Fuse daemon can be shared (i.e., mounted multiple times). When doing
the first (primary) mount, the spawner and the mounter of the daemon must
have the same uid, or the mounter should be the superuser.
After the primary mount is in place, secondary mounts can be done by
anyone unless this feature is disabled by private. The behaviour of a
secondary mount is analogous to that of symbolic links: they redirect all
filesystem operations to the primary mount.
Doing a secondary mount is like signing an agreement: by this action, the
mounter agrees that the Fuse daemon can trace her I/O activities. From
then on she is not banned from using the filesystem (either via her own
mount or via the primary mount), regardless whether allow_other is used
or not.
The device name of a secondary mount is the device name of the
corresponding primary mount, followed by a '#' character and the index of
the secondary mount; e.g., /dev/fuse0#3.
SECURITY
System administrators might want to use a custom mount policy (ie., one
going beyond the vfs.usermount sysctl). The primary tool for such
purposes is sudo(8) (ports/security/sudo). However, given that
mount_fusefs is capable of invoking an arbitrary program, one must be
careful when doing this. mount_fusefs is designed in a way such that it
makes that easy. For this purpose, there are options which disable
certain risky features (-S and -A), and command line parsing is done in a
flexible way: mixing options and non-options is allowed, but processing
them stops at the third non-option argument (after the first two have
been utilized as device and mountpoint). The rest of the command line
specifies the daemon and its arguments. (Alternatively, the daemon, the
special and the mount path can be specified using the respective
options.) Note that mount_fusefs ignores the environment variable
POSIXLY_CORRECT and always behaves as described.
In general, to be as scripting / sudoers(5) (ports/security/sudo)
friendly as possible, no information has a fixed position in the command
line, but once a given piece of information is provided, subsequent
arguments/options cannot override it (with the exception of some non-
critical ones).
ENVIRONMENT
MOUNT_FUSEFS_SAFE This has the same effect as the -S option.
MOUNT_FUSEFS_VERBOSE
This has the same effect as the -v option.
MOUNT_FUSEFS_IGNORE_UNKNOWN
If set, mount_fusefs will ignore unknown mount
itself, they affect the behaviour of fuse daemons:
FUSE_DEV_NAME Device to attach. If not set, the multiplexer path
/dev/fuse is used.
FUSE_DEV_FD File descriptor of an opened Fuse device to use.
Overrides FUSE_DEV_NAME.
FUSE_NO_MOUNT If set, the library will not attempt to mount the
filesystem, even if a mountpoint argument is supplied.
FILES
/dev/fuse Fuse device with which the kernel and Fuse daemons can
communicate.
/dev/fuse The multiplexer path. An open(2) performed on it
automatically is passed to a free Fuse device by the kernel
(which might be created just for this puprose).
EXAMPLES
Mount the example filesystem in the Fuse distribution (from its
directory): either
./fusexmp /mnt/fuse
or
mount_fusefs auto /mnt/fuse ./fusexmp
Doing the same in two steps, using /dev/fuse0:
FUSE_DEV_NAME=/dev/fuse ./fusexmp &&
mount_fusefs /dev/fuse /mnt/fuse
A script wrapper for fusexmp which ensures that mount_fusefs does not
call any external utility and also provides a hacky (non race-free)
automatic device selection:
#!/bin/sh -e
FUSE_DEV_NAME=/dev/fuse fusexmp
mount_fusefs -S /dev/fuse /mnt/fuse "$@"
SEE ALSO
fstat(1), mount(8), sudo(8) (ports/security/sudo), umount(8)
HISTORY
mount_fusefs was written as the part of the FreeBSD implementation of the
Fuse userspace filesystem framework (see
https://github.com/libfuse/libfuse) and first appeared in the
sysutils/fusefs-kmod port, supporting FreeBSD 6.0. It was added to the
base system in FreeBSD 10.0.
CAVEATS
This user interface is FreeBSD specific. Secondary mounts should be
unmounted via their device name. If an attempt is made to unmount them
via their filesystem root path, the unmount request will be forwarded to
the primary mount path. In general, unmounting by device name is less
error-prone than by mount path (although the latter will also work under
BUGS
special is treated as a multiplexer if and only if it is literally the
same as auto or /dev/fuse. Other paths which are equivalent with
/dev/fuse (eg., /../dev/fuse) are not.
FreeBSD 14.0-RELEASE-p11 October 9, 2021 FreeBSD 14.0-RELEASE-p11