/kamid

A FREE, easy-to-use and portable implementation of a 9p file server daemon for UNIX-like systems.

Primary LanguageCISC LicenseISC

kamid -- 9p file server daemon

kamid is a FREE, easy-to-use and portable implementation of a 9p file server daemon for UNIX-like systems.

It includes the kamid(8) daemon, a control utility kamictl(8), the kamiftp(1) 9P CLI client and the TLS proxy kamiproxy(1).

Building

When building from a release tarball:

$ ./configure
$ make
# make install # eventually

to build from a git checkout:

$ ./autogen.sh
$ ./configure
$ make

Usage

In order to run, the _kamid user must exists, with /var/empty as home directory. A valid configuration file /etc/kamid.conf is also needed. kamid must be started with root privileges.

A sample configuration file:

# /etc/kamid.conf
pki localhost cert "/etc/ssl/localhost.crt"
pki localhost key  "/etc/ssl/private/localhost.key"

table users { "SHA256:..." => "op" }

listen on localhost port 1337 tls pki localhost auth <users>

Contributing

Every form of contribution is well accepted! Just send an email or open a pull request (either on Codeberg or GitHub.)

Don't know where to start? Take a look at the TODO file!

Porting

kamid is developed primarly on OpenBSD, but it's known to work on Debian, Devuan and NixOS.

Have you ported / compiled kamid on other systems? Cool! I'd be happy to hear about it! I'm particularly interested in the difficulties in doing so to ease the portability.

Testing

The regression suite uses sudo (or doas) because it needs root privileges for certain operations. To run the test suite:

$ make test

The regression are written using a custom DSL, ninepscript. contrib/9ps-mode.el is the major mode for Emacs.

There's another regression suite written in common lisp in regress/lisp/9p-test; it depends on other lisp libraries available through quicklisp. Make sure to have sbcl and the relevant lisp dependencies installed, then run

$ make HAVE_LISP=yes test

License

kamid is released under a BSD-like license. The bulk of the code is under the ISC license, but some file are BSD2 or BSD3.

regress/lisp/9p-test/ (the common lisp regression suite) is released under the GNU GPLv3+.