Node:System overview, Next:SFS configuration, Previous:Getting Started, Up:Top
sfskey--+---------------- - - - -----------+
| |
agent--+ |
agent------+ |
| |
+---------------+ +-------------+
| sfscd |-------- - - - --------| sfssd |
| | | | | |
| sfsrwcd-+ | | +-sfsrwsd--+-+
| nfsmounter-+ | | +-sfsauthd | |
+---------------+ +-------------+ |
| V
+--------+ | +--------+
| kernel | | | kernel |
| NFS3 |<-----+ | NFS3 |
| client | | server |
+--------+ +--------+
CLIENT SERVER
SFS consists of a number interacting programs on both the client and the
server side.
On the client side, SFS implements a file system by pretending to be an
NFS server and talking to the local operating system's NFS3 client. The
program sfscd gets run by root (typically at boot time).
sfscd spawns two other daemons--nfsmounter and
sfsrwcd.
nfsmounter handles the mounting and unmounting of NFS file
systems. In the event that sfscd dies, nfsmounter
takes over being the NFS server to prevent file system operations from
blocking as it tries to unmount all file systems. Never send
nfsmounter a SIGKILL signal (i.e., kill -9).
nfsmounter's main purpose is to clean up the mess if any other
part of the SFS client software fails. Whatever bad situation SFS has
gotten your machine into, killing nfsmounter can only make
matters worse.
sfsrwcd implements the ordinary read-write file system
protocol. As other dialects of the SFS protocol become available, they
will be implemented as daemons running alongside sfsrwcd.
Each user of an SFS client machine must run an instance of the
sfsagent command. sfsagent serves several purposes.
It handles user authentication as the user touches new file systems. It
can fetch HostIDs on the fly, a mechanism called Dynamic
server authentication. Finally, it can perform revocation checks on
the HostIDs of servers the user accesses, to ensure the user does
not access HostIDs corresponding to compromised private keys.
The sfskey utility manages both user and server keys. It lets
users control and configure their agents. Users can hand new private
keys to their agents using sfskey, list keys the agent holds,
and delete keys. sfskey will fetch keys from remote servers
using SRP, SRP. It lets users change their public keys on remote
servers. Finally, sfskey can configure the agent for dynamic
server authentication and revocation checking.
On the server side, the program sfssd spawns two subsidiary
daemons, sfsrwsd and sfsauthd. If virtual hosts or
multiple versions of the software are running, sfssd may spawn
multiple instances of each daemon. sfssd listens for TCP
connections on port 4. It then hands each connection off to one of the
subsidiary daemons, depending on the self-certifying pathname and
service requested by the client.
sfsrwsd is the server-side counterpart to sfsrwcd.
It communicates with client side sfsrwcd processes using the
SFS file system protocol, and accesses the local disk by acting as a
client of the local operating system's NFS server. sfsrwsd is
the one program in sfs that must be configured before you run it,
sfsrwsd_config.
sfsauthd handles user authentication. It communicates
directly with sfsrwsd to authenticate users of the file system.
It also accepts connections over the network from sfskey to
let users download their private keys or change their public keys.