AFS: Here, There and Everywhere.

Febuary 12, 1996

This is an outline of the ACM talk about AFS and Kerberos.

AFS:

AFS is the Andrew File System developed at CMU, and now maintained, developed and sold by Transarc (http://www.transarc.com/). It was named after Andrew Carnegie, co-founder of Carnegie Mellon University.

AFS is distributed. That is, the files and databases sit on multiple machines on the network.

Overview of AFS:

In AFS there are three classes of machines:

  1. Clients, which run afsd and have some kernel patches.

    This is the part you've seen. Some of you have installed linux, or netbsd clients.

  2. Fileservers, which run processes to answer volume and fileserver request.

  3. Database servers, which run processes for:

Note, that it is possible for a machine to be both a fileserver and a database server, and run the AFS client.

At RPI, we have 10 fileservers, three of which are also database servers. A (usually) up-to-date list of RPI's fileservers can be found at: http://www.rpi.edu/~sofkam/fileservers.html.

Note, the client machines only need to know about the database machines.

A collection of fileservers running with the same database servers is called a ``cell.'' At rpi, our cell is called ``rpi.edu.''

AFS, however, is truly global. By doing an ls of /afs you can see all the cells your workstation knows about.

The database servers for cells is located in a file called CellServDB , and is updated periodically from transarc.

Volumes, mount points and ACLs.

AFS stores volumes on a partition. Volumes have separate owners and quotas. They can be freely moved between fileservers. (Think of them as collections of files).

To access a volume, however, it must be mounted someplace in the /afs/rpi.edu tree. This is done with the

fs mkmount <dir> <volume>
command.

The mount point is like a symbolic link. When you enter a directory that is a mount point, the client asks the vlserver for information about where that volume is located.

The client also asks the ptserver if you have access to the volume.

Access is controlled by Access Control Lists attached to each directory.

ACLs are set with:

fs sa <directory> <principle> <permissions>
There are three shortcuts, and one special.

The RPI memo 114 has information on ACLs and pts groups. (located in /dept/its/ic/tex/rpi114.dvi ).

There are also negative ACLs, that remove permissions previously granted with positive (normal) ACLs.

Two exceptions to ACLs:

  1. system:administrators have implicit la access.

  2. The volume owner (user, in the case of home volumes) has implicit la access.
That is, the volume owner can always give themselves access.

UNIX user permissions mask the ACL permissions. The unix group and other permissions are ignored!

Protection (pts) entries.

ACLs contain entries from the protection database. These can be principles (users) or groups. Groups have negative ids.

The protection database is edited via the pts command.

pts creategroup <owner:group> [<owner>]
prt creategroup <group>
pts member <user or group>
pts exam <user or group>
pts setfields <user or group> <somar bits>
The SOMAR bits control who can examine and modify groups.

There are three values for each SOMAR field:

  1. hyphen (- ): Only owners have access right.
  2. lowercase: members of group have access right.
  3. uppercase: everybody has access right.

The default for user is S---- , the default for groups is S-M-- .

Replications and how they work.

AFS also has the ability to replicate volumes. That is, a duplicate of a volume is stored on a different fileserver. These duplications are read-only, and they are not ``mirrors''

Replications provide:

  1. Reliability. If the server with one replication goes down, the other replications are still accessible.

  2. Speed. The access to heavily used volumes are spread out over several fileservers (and networks).
In addition, reading read-only data simplifies the cashing scheme.

There are Three types of replications:

Note that Clones require only a separate AFS header, but contain links to the actual data. If the clone is accessed instead of the read-write volume the server does not need to maintain callbacks (check the cache terminology).

When first created, backup volumes also consist of a header, with pointers to the same data. But, the files are marked ``copy on write.'' Each time you modify a file, it is first copied to the backup volume.

Replications are updated by the vos release command, which copies changes from the read-write volume to the read-only volumes.

Kerberos:

Kerberos is an authentication mechanism that allows a client to authenticate via a third party (the Kerberos server) without the password every going over the network in the clear.

A good description of how it works can be found in Scientific American, November 1994 in an article by Jeffrey Schiller.

MIT versus AFS Kerberos. The differences are in:

Since version 3.3 AFS's kaserver has supported AFS kerberos on port 7004, and MIT Kerberos on port 750. But, the different hash's require a password change. The coming synthesis (i.e., RPI switching to MIT kerberos served from kaserver ).

Kerberos V. Not much to say really. Its a slightly different protocol/format then Kerberos IV, but at least the string-to-key is the same. Kerberos V comes with a Kerberos IV translator.

DCE/DFS:

Some advantages of DCE/DFS.

Some disadvantages of DCE/DFS: