This file explains what you will need to do to get the Athena utilities
up and running on your Linux system.  Note that the included programs 
are intended for a single workstation in an environment similar to MIT's 
Project Athena.  If you want to set up an entirely new Athena-like 
system, the code is available from athena-dist.mit.edu.  Most of the 
included code comes straight from there. I have completely re-written 
most of the Makefiles, made a few minor changes to the code, and generally 
simplified compiling and installing everything, but the actual code is 
still MIT's.  A description of each section follows.  Complete documentation
for all the programs can be found in the included man pages.

Hesiod:

Hesiod is a way of using a standard nameserver to return information 
other than hostnames.  For example, a Hesiod nameserver could return
information about a user's login name, password, office, uid, gid, etc.,
or in other words, an entry from /etc/passwd.  Any text can be returned
from a Hesiod nameserver.  The user program "hesinfo" can be used to 
lookup this information.  The program uses hes_resolve(), which is part
of the Hesiod library.  Both of these are included in this package.

Kerberos:

The Kerberos system authenticates individual users in a network 
environment.  Typically, a Kerberos server will run on a remote machine
and provide authentication for an entire realm.  Users will use the 
following programs to communicate with the Kerberos server:
	kinit - prompts you for your Kerberos username and password
	klist - shows you a list of Kerberos "tickets" you own
	kdestroy - use this before logging out - removes your tickets
 
These programs and the Kerberos library are included in this package.
The Kerberos server code and administration programs are not included, as
this package is intended for use on a Linux workstation within an
established network environment.

Zephyr:

Zephyr is a notice transport and delivery system which was developed
at MIT.  It is analogous to the Unix "write" command, but works across
a network environment instead of an individual machine, and also allows
much greater control and flexibility.  One or more Zephyr servers will
typically run in a network environment, and client programs on each
workstation will communicate with the server.  The following programs
are included in this package:
	zhm - the HostManager program, which runs on each workstation and
	      serves as the link between users and the server
	zwgc - the WindowGram client, which displays messages to the user
	zctl - handles subscriptions to Zephyr
	zwrite - allows users to send messages

Various other client programs are included, which are described further
in man pages.  As in the Kerberos section, the Zephyr server is not 
included.  Please see the document "instop.ps" for more information
about installing Zephyr.

Pmake:

I found pmake real easy to use, and since I'm too lazy to write out
full Makefiles, and since the Imakefiles from MIT are the stuff nightmares
are made of, this is what we're gonna use.


To give credit where credit is due:

The Hesiod, Kerberos, and Zephyr code was developed at MIT for Project
Athena.  Copyright information is included within each package, so I
won't waste time repeating it here.


Configuring:

The way things are written now, everything is set up for an environment
that uses Kerberos and Hesiod.  If you don't use Hesiod, you'll have to
change some things. Mostly just go through the Makefiles and delete
-DHESIOD and -lhesiod. You'll find most of this in the Zephyr code.  If
you don't use Kerberos, it's probably pretty useless getting this package,
since Zephyr doesn't work too well without it.  Everything compiles just
fine on my Linux system, which is a 486DX/33 with 8 megs of RAM.  I'm 
currently running kernel 0.99.14n, using libc4.5.8 and gcc2.5.8.  I
haven't tried compiling with earlier versions, but I don't think there
should be a problem.
The only thing you really need to decide is where you want everything
to be installed.  You could put all the binaries in /usr/local/bin, but
I prefer to put things in /usr/athena/bin and add this to my search path.
The "Build" script will take care of everything; just change the first
two lines to reflect where you want the programs to go.  Then execute
this script, and away you go.


Setting it up:

There are a few files you'll need to create.  The header file
kerberos/include/krb.h contains the following five lines:
#define         KRB_CONF        "/etc/athena/krb.conf"
#define         KRB_RLM_TRANS   "/etc/athena/krb.realms"
#define         KRB_MASTER      "kerberos"
#define         KRB_HOST         KRB_MASTER
#define         KRB_REALM       "FIRE.COM"

You'll want to create the directory /etc/athena or change this definition
to something different.  Also change the definition of KRB_REALM to
your Kerberos realm.  In the same directory are sample files for krb.conf
and krb.realms.  You'll need to make appropriate changes and install these
in the correct place.  Check with your system administrators for more
information about these files, or check other workstations already running
Kerberos.

In the hesiod directory, the file hesiod.h contains the following three
lines:
#define HESIOD_CONF     "/etc/athena/hesiod.conf" /* Configuration file. */
#define DEF_RHS         ".fire.com"             /* Defaults if HESIOD_CONF */
#define DEF_LHS         ".ns"                   /*    file is not present. */

Once again make any changes needed. A sample hesiod.conf file is included
in the same directory.  You should find these files on any workstation
already running Hesiod, or check with your system administrators.

Make sure /etc/resolv.conf points to a Hesiod nameserver if you'll be
using this feature.  You'll want to have the zhm program started in
your rc files (I suggest /etc/rc.local).  You'll also need to make a few
changes to /etc/services.  The following lines show the additions I made:
kdc                 750/tcp  kerberos
kdc                 750/udp  kerberos
kerberos_master     751/tcp                      # Kerberos authentication
kerberos_master     751/udp                      # Kerberos authentication
passwd_server       752/udp                      # Kerberos passwd server
userreg_server      753/udp                      # Kerberos user registration
krb_prop            754/tcp                      # Kerberos slave propagation
zephyr-srv         2102/udp                      # Zephyr server
zephyr-clt         2103/udp                      # Zephyr server-to-hostmanager
zephyr-hm          2104/udp                      # Zephyr hostmanager


Support:

Frankly, I'm not much of a programmer, and if you get weird errors
compiling this stuff, I probably won't be able to help you out.  I'll try
to answer any questions you might have, but really questions that aren't
specific to this package should be directed back to MIT.  The address is
somewhere in the files here. :)  Feel free to write with any comments you 
might have. Good luck everyone!

Jon Green
jcgreen@iastate.edu
