This is a set of notes for a class taught in Fall 1994 for the University of Pennsylvania's DCE Task Force and interested parties.
This course is based on a pair of courses taught by Transarc Corporation in August 1994 and their help is appreciated.
1. Cells 2. RPCs: Remote Procedure Calls 3. Threads 4. Security a. Registry Service b. UUIDs c. Authentication Service d. Privilege Service 5. Naming a. CDS: the Cell Directory Service b. Global Naming: X.500 and DNS c. Intercell Communications and the GDA d. RPC End-Point Database 6. Time Service 7. DFS: Distributed File Service a. Clients b. Servers c. Files d. Data Protection e. Filesets and the File Location Data Base (FLDB) 8. Putting it all together in a hypothetical UPenn Cell
DCE vendors will the two to be combined, which would require system administrators to synchronize Unix and DCE users, groups and accounts.
DCE administrators will still require multiple identities.
Derived from network MAC address (e.g., Ethernet), process id, a time stamp, and additional bits for uniqueness.
They look like this:
65fa1425-a243-ca11-f59a-02608c0ffe49, 65FA1425-A243-CA11-F59A-02608C0FFE49, or 65fa1425a243ca11f59a02608c0ffe49. obsolete form: 65FA1425A243.CA.11.F5.9A.02.60.8C.0F.FE.49
(If the examples above were really supposed to be different forms of the same UUID, they shouldn't look quite as much alike as they do, because the different forms have different pairwise byte orderings or some such fiddle faddle.)
Since everything is a principal, everything can authenticate itself, and the authentication service provides for mutual authentication.
Authorization: determination of an authenticated principal's privileges.
DCE Access Control Lists (DCE ACLs): extension to POSIX ACLs, in which each DCE object has an ACL that determines which principals and groups can operate on it and how. This is a generalization of UNIX mode bits, applying to more than just files, describing classes of users beyond owner, owning group, and all others, and controlling more than just read, write and execute operations.
CDS databases are called clearinghouses.
The DCE Namespace is structured as a hierarchical directory tree.
/... is the root of the tree.
/.../upenn.edu will be the root of Penn's DCE namespace.
/.../upenn.edu/printers/seas/pserv-1 could end up being the name of a print service in SEAS at Penn.
/.: is shorthand for the root of the local cell, e.g., /.../upenn.edu, in which case the printer above could also be referenced as /.:/printers/seas/pserv-1
/: is shorthand for the file system, which is really /.../upenn.edu/fs.
Note: because we haven't figured out how Hierarchical Cells will work for us yet, these examples are hypothetical at best.
The big news here is that clients don't have to know where things are, CDS knows and can tell them.
A CDS Junction is the interface to the non-CDS part of the DCE namespace. Junctions are to the CDS namespace as special device "files" are to the Unix file system.
/.:/sec is the security junction and it contains entries like: /.:/sec/principal/shull
note that /.:/sec is the CDS part that allows us to find the security service, and principal/shull is meaningful only to the security service.
Similarly, /.:/fs is the file system junction, which might contain /.:/fs/usr/shull/.cshrc. DCE names are not file names unless they are under /.:/fs (aka /:).
(insert picture here.)
For example, say we wanted to access a foreign server at MIT, say /.../mit.edu/fs/ftp/pub/emacs/emacs-20.gz
An RPC client that only knows the server name needs to obtain a network address for the machine, and a port number for the service. Thus
If the server is in a foreign cell, the local GDA and either BIND or GDS find the foreign cell's CDS,
The server's CDS passes the client the server's network address,
The server's endpoint database then tells the client which port the service is on, and
the client can then communicate directly with the server.
DTS is DCE's Distributed Time Service, which guarantees that all DCE machines within acceptable margins of error with respect to the current time.
The Internet standard NTP (Network Time Protocol) can also be used. DTS is simply a means of making sure clocks are synchronized so other components of the DCE work.
Must run the DFS Cache Manager process and a modified kernel!
If not in secure environment, local disk space is used only for swap and cache, i.e., user files, data and binaries are kept on secure servers.
Store DFS files, directories, and ACLs
Fast machines with plenty of disk space.
Disk partitions are exported to make them visible.
DFS server processes actually serve the files to the clients.
Usually DFS Servers should also be DFS Clients so tools and utilities are accessible.
Minimization of server complexity is also desirable, because it increases server stability, e.g., don't run Motif and allow only two logins on your servers.
But, all DFS files, including directories, are stored under the DFS junction /.../upenn.edu/fs (aka /.:/fs and /:).
The following are equivalent within the hypothetical upenn.edu cell:
/.../upenn.edu/fs/usr/shull/.cshrc
/.:/fs/usr/shull/.cshrc
/:/usr/shull/.cshrc
WARNING: Colons are dangerous! Beware /etc/passwd and path entries that use ":" as a delimiter. The shorthands above cause both loud and silent "hurls" in these cases.
ACLs specify lists of users and/or groups and the permission or permissions each has for an object.
ACLs are a generalization of Unix mode fits, able to specify more users, groups, classes of users, and permissions. Users and groups can even be from foreign cells, but this requires mutual trust on the part of the cell administrators.
ACLs are even backward compatible with standard Unix mode bits.
As of November release of DFS, frequently read, but infrequently changed files, such as system and application binaries, can be replicated on multiple DFS servers to:
1) increase availability through redundancy, and therefore perceived reliability, and
2) balance load for improved performance
Over-subscription of disk quotas is supported
(insert picture here.)
Are of fixed size on most systems -- compared to filesets which routinely grow and shrink based on usage.
(insert picture here.)
Similarly, the destination of /: is a mount point for the cell's root.dfs fileset.
(insert picture here.)
File Location Database -- FLDB
FLDB contains the 1) Fileset name, 2) Numeric ID, and 3) Location (or locations for replicated filesets) for each fileset in the local cell.
Cache managers contact the File Location (FL) Server to figure out where to find a needed fileset. This is necessary because DFS mount points store only the names of filesets, not their locations. DFS Clients cache fileset location information.
(insert picture here.)
FLDBs are replicated to provide load balancing and greater availability.
They should really be run on three (3) stable, secure, DFS servers.
FLDB replicas are not the same as fileset replicas.
1. Encryption and Decryption 2. Kerberos for Mutual Authentication a. Ticket Types b. Ticket Expiration 3. Authentication Commands a. dce_login b. klist c. kinit d. kdestroy e. Unix su f. How DFS Handles Authentication 4. DCE ACLs a. ACL Structure b. Entry types c. Permission types d. Evaluation e. Default ACLs f. acl_edit g. ACL Managers h. DFS ACLs and Unix Mode Bits 5. Special Principals and Groups 6. Basic End-User Troubleshooting a. Checking DCE credentials b. cdscp (CDS Control Program) c. DFS Command Parser d. cm Command Suite e. Troubleshooting checklist
Some folks are experimenting with the use of RSA, public key technology as a more secure replacement for DES.
We will assume DES-based Kerberos for this class.
Example:
Encrypting "Oh rose, thou art sick," with the key "snafu" might generate the string "dcba3l9kflds7j09sqsldkda".
Decrypting "dcba3l9kflds7j09sqsldkda" with the key "snafu" would then generate "Oh rose, thou art sick,".
However, without the key, even with the right algorithm, figuring out that "dcba3l9kflds7j09sqsldkda" means "Oh rose, thou art sick," would be so computational difficult as to be impractical for almost everyone.
The shared secret for human principals is typically a login password the user types in, but it could also be from a magnetic card, a voice print, a hand-telemetry reader, a challenge/response card, or a smart ID card.
For non-interactive principals, the shared secret is the server key, which is stored in a keytab file on the server's disk. The term key is commonly used for the shared secrets of both users and servers.
Kerberos authenticates the identity of DCE principals, which may have to be distinct from their Unix identities, e.g., the cell-admin.
Kerberos provides mutual authentication of principals -- users to servers and back again.
Password is used only for encryption and decryption, and is therefore not passed over the network.
An unexpired TGT lets a client system automatically refresh other tickets when they expire.
But, when the TGT expires, the client must re-authenticate himself or herself, by resubmitting a password.
When PTGTs expire, systems can automatically refresh it using the keytab file.
Expiration times are inside the encrypted tickets, so clients cannot modify them.
As a rule, the life of server tickets should be less than that of PTGTs, which should, in turn, be less than that of TGTs.
3. Authentication Commands
a. dce_login
b. klist
c. kinit
d. kdestroy
e. Unix su
f. How DFS Handles Authentication
4. DCE ACLs
a. ACL Structure
b. Entry types
c. Permission types
d. Evaluation
e. Default ACLs
f. acl_edit
g. ACL Managers
h. DFS ACLs and Unix Mode Bits
5. Special Principals and Groups
6. Basic End-User Troubleshooting
a. Checking DCE credentials
b. cdscp (CDS Control Program)
c. DFS Command Parser
d. cm Command Suite
e. Troubleshooting checklist
Ba, da, ba, da, ba, da, dat's all Folks!
For now.