Node:System overview, Next:, Previous:Getting Started, Up:Top



System overview


   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.