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 SERVERSFS 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.