Serve 9P from Unix. A fork/clone of https://bitbucket.org/plan9-from-bell-labs/u9fs/ dedicated to Jehanne development. http://jehanne.io
Go to file
Iruatã Souza d65923fd17 Merged in master (pull request #1)
wstat: update opath after a rename

Approved-by: Charles Forsyth
2021-01-24 23:15:10 +00:00
.gitignore add .gitignore 2019-08-22 13:36:45 +01:00
9pfs.plist move fcntl.h to plan9.h for open(); move getremotehostname to u9fs.h as local lib 2015-10-04 21:41:44 +01:00
LICENSE 20110512-2206 2011-05-12 22:06:54 +01:00
README.md fix typoc (Koichi Shiraishi) 2019-08-22 13:41:55 +01:00
authnone.c 20110512-2206 2011-05-12 22:06:54 +01:00
authp9any.c zero structure size, not pointer 2015-10-04 21:22:17 +01:00
authrhosts.c define this and that to answer warnings 2020-03-11 16:42:21 +00:00
convD2M.c 20110512-2206 2011-05-12 22:06:54 +01:00
convM2D.c 20110512-2206 2011-05-12 22:06:54 +01:00
convM2S.c 20110512-2206 2011-05-12 22:06:54 +01:00
convS2M.c 20110512-2206 2011-05-12 22:06:54 +01:00
cygwin.c 20110512-2206 2011-05-12 22:06:54 +01:00
des.c 20110512-2206 2011-05-12 22:06:54 +01:00
dirmodeconv.c 20110512-2206 2011-05-12 22:06:54 +01:00
doprint.c 20110512-2206 2011-05-12 22:06:54 +01:00
fcall.h avoid ANSI C misfeature 2020-03-11 16:22:45 +00:00
fcallconv.c 20110512-2206 2011-05-12 22:06:54 +01:00
makefile allow optimisation 2015-10-04 21:14:10 +01:00
oldfcall.c 20110512-2206 2011-05-12 22:06:54 +01:00
oldfcall.h 20110512-2206 2011-05-12 22:06:54 +01:00
plan9.h define this and that to answer warnings 2020-03-11 16:42:21 +00:00
print.c return buf, not doprint's result 2015-10-04 21:51:41 +01:00
random.c move fcntl.h to plan9.h for open(); move getremotehostname to u9fs.h as local lib 2015-10-04 21:41:44 +01:00
readn.c 20110512-2206 2011-05-12 22:06:54 +01:00
remotehost.c 20110512-2206 2011-05-12 22:06:54 +01:00
rune.c 20110512-2206 2011-05-12 22:06:54 +01:00
safecpy.c 20110512-2209 2011-05-12 22:09:50 +01:00
strecpy.c 20110512-2206 2011-05-12 22:06:54 +01:00
sun-inttypes.h 20110512-2206 2011-05-12 22:06:54 +01:00
tokenize.c 20110512-2206 2011-05-12 22:06:54 +01:00
u9fs.c wstat: update opath after a rename 2020-09-05 13:38:44 +02:00
u9fs.h move fcntl.h to plan9.h for open(); move getremotehostname to u9fs.h as local lib 2015-10-04 21:41:44 +01:00
u9fs.man 20110512-2213 2011-05-12 22:14:08 +01:00
u9fsauth.h 20110512-2206 2011-05-12 22:06:54 +01:00
utfrune.c 20110512-2206 2011-05-12 22:06:54 +01:00

README.md

U9fs serves the Plan 9 protocol 9P from user-space on other operating systems.

It runs on many POSIX-compatible systems, including Linux and MacOS X. Currently, it must first be compiled. See the comments at the top of the makefile for a few special instructions. Ordinarily, you should be able to type:

make

to create an executable called u9fs.

See the manual page u9fs.man for details of options and arguments.

Unfortunately, installing the program to run automatically under inetd, xinetd or equivalent is rather system-dependent. (MacOS X is an extreme case.) The rest of this file will list recipes known so far.

  • Ubuntu 11.04 (and earlier, and later), with xinetd and authrhosts I keep u9fs in a new directory /bin/9, but it could easily be in /usr/local/bin. It is not setuid. I use the following in /etc/xinetd.d/u9fs: service u9fs { socket_type = stream user = root instances = UNLIMITED wait = no server = /bin/9/u9fs port = 564 } It keeps the default log file in /tmp/u9fs.log. It's an internal machine, and I use rhosts authentication (which is the default): I list acceptable machines in /etc/hosts.equiv, and the server trusts what they send. -- charles.forsyth@gmail.com, May 2011

  • Debian 7 (and earlier), with inetd, and authp9any I use this configuration on several virtual servers. I keep u9fs in a new directory /bin/9. It is not setuid. I use the following in /etc/inetd.conf: u9fs stream tcp nowait root /bin/9/u9fs u9fs -a p9any I had to add the following to /etc/services: # Local services u9fs 564/tcp The machine is not an internal machine, and I use p9any authentication (usual Plan 9 variant). It takes the secrets from /etc/u9fs.key, which had better be well-protected. There are three lines: the secret; the authentication user ("bootes"); the authentication domain. -- charles.forsyth@gmail.com, May 2015

  • OpenBSD 4.3, with inetd, and authrhosts; same on FreeBSD 4.8(!) I use this configuration on an internal gateway. I keep u9fs in directory /bin/9. /etc/inetd.conf has the following line: p9fs stream tcp nowait root /bin/9/u9fs u9fs The protocol name "p9fs" is already in /etc/services. -- charles.forsyth@gmail.com, May 2011

  • MacOS X (last tested on OS X Yosemete (10.10.5) U9fs can be started via ssh using srvssh(4) on Plan 9, or more conventionally by MacOS X's launchd(8). Launchd needs a configuration file. A sample is included here in the file p9fs.plist. To make the service available globally, it should be installed as /Library/LaunchDaemons/9pfs.plist. If instead it is installed in /Library/LaunchAgents, it will run only when a user is logged in; if installed in $HOME/Library/LaunchAgents it will run only when that particular user is logged in.

    In order to start the listener it must first be loaded into launchd:

    $ sudo launchctl load /path/to/9pfs.plist

    If you are running the Mac OS X firewall you will need to add an entry to pass the 9pfs protocol in: SystemPreferences->Sharing->Firewall

    The example 9pfs.plist uses 9p authentication, described in detail in u9fs.man, and serves the root of the MacOS X file system. It also assumes the executable lives in /bin/9/u9fs. Edit the configuration file to change those settings. -- charles.forsyth@gmail.com, September 2015, based on an entry in the Plan 9 wiki