fuse9p - Man Page
filesystem client for 9p2000.u servers
Synopsis
mounting
fuse9p [-dPv] [-c mode] [-k file] [-l user] [-p port] [-t secs] [-U uid_map] [-G gid_map] [user@]server[:port] mountpoint
unmounting
fusermount -u mountpoint
Description
9p2000 is a file/RPC protocol developed for Plan9 operationg system. Due to its extreme simplicity it can be used to embed file servers in different applications to provide access to the internal structures and API in runtime. 9p filesystem can be mounted as well with the kernel FS implementation, but the kernel v9fs module does not support client authentication. Exporting a read/write filesystem without any authentication is a serious issue. So, if you want to export FS with authentication enabled, you have to use a client that supports it, like this fuse9p implementation.
Another difference from the kernel v9fs is a protocol optimizations that allow fuse9p to work faster, avoiding unnecessary request.
Options
- -c mode
Authentication mode. Now only pki mode is supported by fuse9p.
- -d
Turn on debug and run in foreground. Please note, that in this mode you can not stop fuse9p with Ctrl-C, you should use fusermount -u.
- -G gid_map
Turn on gid mapping (see Uid/Gid Mapping below)
- -k file
Path to the private RSA key file. Implies -c pki.
- -l user
User name to use in FS Tattach command.
- -p port
Server TCP port, if it differs from the default 9p.
- -P
Stay connected even in the case of network errors
- -t secs
Timeout (in seconds) for the 9p socket. By default it is 10 seconds.
- -G gid_map
Turn on gid mapping (see Uid/Gid Mapping below)
- -v
Print py9p version
Limitations
Current fuse9p implementation does not support:
* named pipes
* UNIX sockets
* hard linking
Any other functionality can be limited; if so, report an issue to the project's bugtracker.
Authentication
pki mode
PKI authentication mode uses standard SSH RSA keys. The server should have the public one, the client should use the corresponding private key. If the private key file location is not set up by -k option, fuse9p tries to load it from /home/${user}/.ssh/id_rsa. If the user is not set up by -l option or in the server spec, fuse9p uses $USER environment variable.
Reconnection
Being started with -P option, fuse9p tries to reconnect to the server, if the connection is lost. When there is no connection, in this mode fuse9p provides empty mount point. All operations on open files will return EIO or ENOENT.
fuse9p reconnect interval increases with each iteration, it grows by power of 2: 2, 4, 8, 16 etc. seconds up to the some limit. Each file stat() or directory listing call resets the interval back to 2 seconds.
Since the reconnection is running asynchronously, you can get empty mount point even if the server became reachable; if so, just repeat the directory listing call.
Uid/Gid Mapping
Often, uids/gids on the server and client side are not the same. This feature allows you to map server's uids/gids into client's ones in the way like this:
... -U "{1000: 500, 1001: 505}" -G "{1000: 500}" ...
Please note, that server's uid/gid goes first.
See Also
ssh-keygen(1), 9pfs
Authors
* Peter V. Saveliev <peet@redhat.com> -- fuse9p author, py9p library maintainer
* Andrey Mirtchovski <aamirtch@ucalgary.ca> -- py9p library author
Links
* All bugs post to the project page:
https://github.com/svinota/py9p/issues
* Project's home:
https://github.com/svinota/py9p/
* 9p specifications:
http://swtch.com/plan9port/man/man9/