Exportfs
is a user level file server that allows Plan 9 compute servers, rather
than file servers, to export portions of a name space across networks.
The service is started either by the
cpu(1)
command or by a network listener process. An initial protocol
establishes a root directory for the exported name space.
The
connection to
exportfs
is then mounted, typically on
/mnt/term.
Exportfs
then acts as a relay file server: operations in the imported file
tree are executed on the remote server and the results returned. This
gives the appearance of exporting a name space from a remote machine
into a local file tree.
The options are:
- -A address
- Use the network
address
to announce
aan(8)
connections,
if requested by the initial protocol.
- -a
- Authenticate the user with the
p9any
protocol before running the regular
exportfs
session; used when
exportfs
is invoked to handle an incoming network connection.
Exportfs
creates a new name space for each connection, using
/lib/namespace
by default (see
namespace(6)).
- -B address
- Dial
address,
authenticate as a
p9any
client, and then
serve that network connection.
Requires setting the root of the name space with
-r
or
-s.
The remote system should run
import
-B
to handle the call.
See
import(4)
for an example.
- -d -f dbgfile
- Log all 9P traffic to
dbgfile
(default
/tmp/exportdb).
- -e 'enc auth'
- Set the encryption and authentication algorithms to use for
encrypting the wire traffic (see
ssl(3)).
The defaults are
rc4_256
and
sha1.
- -m msize
- Set the maximum message size that
exportfs
should offer to send (see
version(5));
this helps tunneled
9P connections to avoid unnecessary fragmentation.
- -N nsfile
- Serve the name space described by
nsfile.
- -n
- Disallow mounts by user
none.
- -P patternfile
- Restrict the set of exported files.
Patternfile
contains one regular expression per line,
to be matched against path names
relative to the current working directory
and starting with
./.
For a file to be exported, all lines with a prefix
+
must match and all those with prefix
-
must not match.
- -R
- Make the served name space read only.
- -r root
- Bypass the initial protocol, serving the name space rooted at
root.
A corresponding
import(4)
must use the
-m
option.
- -S service
- Bypass the initial protocol, serving the result of mounting
service.
A separate mount is used for each
attach(5)
message,
to correctly handle servers in which each mount
corresponds to a different client
(e.g.,
rio(4)).
A corresponding
import(4)
must use the
-m
option.
- -s
- equivalent to
-r
/;
kept for compatibility.
The
cpu
command uses
exportfs
to serve device files in the terminal. The
import(4)
command calls
exportfs
on a remote machine, permitting users to access arbitrary pieces of
name space on other systems.
Because the kernel disallows reads and writes on mounted pipes
(as might be found in
/srv),
exportfs
calls itself (with appropriate
-m
and
-S
options) to simulate reads and writes on such files.
Srvfs
invokes
exportprog
(default
/bin/exportfs)
to create a mountable file system from a name space
and posts it at
/srv/name,
which is created with mode
perm
(default 0600).
The name space is the directory tree rooted at
path.
The
-d,
-P,
and
-R
options, if present, are relayed to
exportprog.