UNOENT doesn't mean "no such user". That's a ubik error.
Literally, it means "file not found when processing dbase" and
is an error you'd expect the ubik server side code to return
if the server's database files unexpectedly disappeared while the
server was running. It turns out, however, that the client side ubik
routine ubik_Call can also return UNOENT if the ubik_client structure
pointer passed to it is 0.
ka_UserAuthenticateGeneral calls the static routine GetTickets.
GetTickets calls ka_GetAFSTicket. ka_GetAFSTicket calls pr_Initialize
and pr_End. pr_End closes and clears pruclient. So, you'll find that
pruclient is cleared after ka_UserAuthenticateGeneral returns, and
that's why you're seeing the UNOENT errors.
The reason why ka_GetAFSTicket calls pr_SNameToID is so that
it can stuff the results of expanding the string "AFS ID %d"
into the token it writes into the kernel.
In fact, you really ought not to be calling pr_Initialize until
after you authenticate. The pruclient connection you'd get
before authenticating will be an unauthenticated connection to ptserver,
which means you won't necessarily be able to get the membership
of a user (unless the M flag is set on that user's pt entry).
-Marcus Watts
UM ITD PD&D Umich Systems Group