glenda.party
term% ls -F
term% cat index.txt
EXPORTFS(4)                Kernel Interfaces Manual                EXPORTFS(4)



NAME
       exportfs, srvfs - network file server plumbing

SYNOPSIS
       exportfs [ options ]

       srvfs  [  -dR  ]  [ -p perm ] [ -P patternfile ] [ -e exportprog ] name
       path

DESCRIPTION
       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  re‐
              quested by the initial protocol.

       -a     Authenticate the user with the p9any protocol before running the
              regular exportfs session; used when exportfs is invoked to  han‐
              dle 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  en‐
              crypting  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 ser‐
              vice.  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  cre‐
       ated  with  mode  perm (default 0600).  The name space is the directory
       tree rooted at path.  The -d, -P, and -R options, if present,  are  re‐
       layed to exportprog.

EXAMPLES
       To export the archive of one user for one month, except for secrets,

              cd /n/dump
              echo '+ ^\.(/2003(/10..(/usr(/glenda/?)?)?)?)?' > /tmp/pattern
              echo '- \.(aes|pgp)$' >> /tmp/pattern
              exportfs -P /tmp/pattern

       Use  srvfs  to  enable mounting of an FTP file system (see ftpfs(4)) in
       several windows, or to publish a /proc  (see  proc(3))  with  a  broken
       process so a remote person may debug the program:

              srvfs ftp /n/ftp
              srvfs broke /mnt/term/proc

       Use srvfs to obtain a copy of a service to be manipulated directly by a
       user program like nfsserver(8):

              srvfs nfs.boot /srv/boot
              aux/nfsserver -f /srv/nfs.boot

       Use srvfs to spy on all accesses to a particular subtree:

              srvfs -d spy /
              tail -f /tmp/exportdb &
              mount /srv/spy /n/spy
              cd /n/spy; ls

SOURCE
       /sys/src/cmd/exportfs
       /sys/src/cmd/srvfs.c

SEE ALSO
       dial(2), import(4), aan(8), listen(8)



                                                                   EXPORTFS(4)