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



NAME
       u9fs - serve 9P from Unix

SYNOPSIS
       u9fs  [ -Dnz ] [ -a authtype ] [ -A autharg ] [ -l logfile ] [ -m msize
       ] [ -u onlyuser ] fsroot

DESCRIPTION
       U9fs is not a Plan 9 program.  Instead it is a program that serves Unix
       files  to  Plan 9 machines using the 9P protocol (see intro(5)).  It is
       typically invoked on a Unix machine by inetd with  its  standard  input
       and  output connected to a network connection, typically TCP on an Eth‐
       ernet.  It typically runs as user root and multiplexes access to multi‐
       ple  Plan 9 clients over the single wire.  It assumes Plan 9 uids match
       Unix login names, and changes to the corresponding Unix  effective  uid
       when processing requests.  Characters in file and directory names unac‐
       ceptable to Plan 9 are translated into a three-character sequence: fol‐
       lowed by two hexadecimal digits.  U9fs serves both 9P1 (the 9P protocol
       as used by the second and third editions of Plan 9) and 9P2000.

       The options are:

       -D     Write very chatty debugging output to the log file (see  -l  op‐
              tion below).

       -n     Signals that u9fs is not being invoked with a network connection
              on standard input and output, and thus should not try to  deter‐
              mine  the remote address of the connection.  This is useful when
              u9fs is not invoked from inetd (see examples below).

       -z     Truncate the log file on startup.  This is  useful  mainly  when
              debugging with -D.

       -a authtype
              Sets  the  authentication method to be used.  Authtype should be
              rhosts, none, or p9any.  The default is rhosts, which  uses  the
              ruserok  library  call  to  authenticate  users  by  entries  in
              /etc/hosts.equiv or $HOME/.rhosts.  This default is  discouraged
              for all but the most controlled networks.  Specifying none turns
              off authentication altogether.  This is useful when u9fs is  not
              invoked  from  inetd  (see examples below, or srvssh in srv(4)).
              Specifying p9any uses the fourth edition Plan  9  authentication
              mechanisms.   The  file  /etc/u9fs.key,  or autharg if specified
              (see the -A option), is consulted for  the  authentication  data
              and  should  be  suitably protected.  This file must contain ex‐
              actly three lines: secret (plaintext password), u9fs-user  (user
              id), and plan9-auth.dom (authentication domain).

              Finally, factotum must be taught a key of the form:

              key proto=p9sk1 dom=plan9-auth.dom user=u9fs-user !password=secret

       -A autharg
              Used  to  specify an argument to the authentication method.  See
              the authentication descriptions above.

       -l logfile
              Specifies the file which should  contain  debugging  output  and
              other  messages.   The  out-of-the-box  compile-time  default is
              /tmp/u9fs.log.

       -m msize
              Set msize for 9P2000 (see open(5)).

       -u user
              Treat all attaches as coming from user.  This is useful in  some
              cases when running without inetd; see the examples.

       If  fsroot  is  specified,  u9fs will serve only that tree; othwise, it
       will serve the entire Unix file system.

EXAMPLES
       Plan 9 calls 9P file service 9fs with TCP port number 564.  Set up this
       way  on  a  machine  called, say, kremvax, u9fs may be connected to the
       name space of a Plan 9 process by

              9fs kremvax

       For more information on this procedure, see srv(4) and bind(1).

       By default, u9fs serves the entire file system of the Unix machine.  It
       forbids  access  to  devices because the program is single-threaded and
       may block unpredictably.  Using the attach specifier device connects to
       a  file system identical to the usual system except it only permits de‐
       vice access (and may block unpredictably):

              srv tcp!kremvax!9fs
              mount -c /srv/tcp!kremvax!9fs /n/kremvax device

       (The 9fs command does not accept an attach specifier.)  Even so, device
       access  may  produce unpredictable results if the block size of the de‐
       vice is greater than 8192, the maximum data size of a 9P message.

       The source to u9fs is in the Plan 9  directory  /sys/src/cmd/unix/u9fs.
       To  install  u9fs  on  a  Unix system with an ANSI C compiler, copy the
       source to a directory on that system and run make.   Then  install  the
       binary in /usr/etc/u9fs.  Add this line to inetd.conf:

              9fs     stream  tcp     nowait  root   /usr/etc/u9fs   u9fs

       and this to services:

              9fs     564/tcp       9fs  # Plan 9 fs

       Due  to  a  bug  in their IP software, some systems will not accept the
       service name 9fs, thinking it a service number because of  the  initial
       digit.  If so, run the service as u9fs or 564.

       On  systems where listeners cannot be started, execnet(4) is useful for
       running u9fs via other network mechanisms; the script srvssh in  srv(4)
       provides this for the ssh protocol.

SOURCE
       /sys/src/cmd/unix/u9fs

DIAGNOSTICS
       Problems are reported to the log file specified with the -l option (de‐
       fault /tmp/u9fs.log).  The -D flag enables chatty debugging.

SEE ALSO
       bind(1), execnet(4), srv(4), ip(3), nfsserver(8)

BUGS
       The implementation of devices is unsatisfactory.

       Semantics like remove-on-close or the atomicity of wstat  are  hard  to
       provide exactly.



                                                                       U9FS(4)