[6392] in Kerberos

home help back first fref pref prev next nref lref last post

Re: Service tickets for K4 login with K5 server

daemon@ATHENA.MIT.EDU (Paul Pomes)
Thu Dec 21 10:18:56 1995

To: kerberos@MIT.EDU
Date: 21 Dec 1995 14:32:41 GMT
From: P-Pomes@Qualcomm.com (Paul Pomes)

frnkzk@ (Kevin Kane) writes:

>I am using a K4-based login program, but have a K5 KDC.  I cannot do a
>root login from the console, so I am guessing that something is wrong
>with service tickets (much like ksu will not work if there is no host
>ticket in /etc/v5srvtab).  But I can't seem to find where to put this
>stuff.  I've tried using v5 and v4 srvtabs, but no dice.  Can anyone
>tell me what ticket I need to make in the principal database, whether
>to extract it as v5 or v4, and where to put it?  Many thanks.

I tried posting this yesterday, but our server was full....

I recently completed my struggle getting our v4 clients working again under
V5 beta 5.  First I had to fix kdb5_edit.c to write a unsigned char for
the kvno value in extract_v4_srvtab() instead of a int.  After that I re-
extracted the srvtab files.  All was still not well.  Any service key updated
with ksrvutil from the CNS distribution had very large key version numbers
as shown by the kdb5_edit show command.  These service entries had to be
deleted and re-created to get the key version number to a sane value.

Moral: fix kdb5_edit, don't use ksrvutil.

/pbp
====
*** kdb5_edit.c	1995/12/05 21:14:24	1.2
--- kdb5_edit.c	1995/12/20 14:48:47
***************
*** 765,770 ****
--- 765,772 ----
  	return;
      }
      for (i = 2; i < argc; i++) {
+ 	unsigned char kvno;
+ 
  	/* iterate over the names */
  	pname = malloc(strlen(argv[1])+strlen(argv[i])+strlen(cur_realm)+3);
  	if (!pname) {
***************
*** 823,829 ****
  	fwrite(argv[i], strlen(argv[i]) + 1, 1, fout); /* p.name */
  	fwrite(argv[1], strlen(argv[1]) + 1, 1, fout); /* p.instance */
  	fwrite(cur_realm, strlen(cur_realm) + 1, 1, fout); /* p.realm */
! 	fwrite((char *)&dbentry.kvno, sizeof(dbentry.kvno), 1, fout);
  	fwrite((char *)key.contents, 8, 1, fout);
  	printf("'%s' added to V4 srvtab '%s'\n", pname, ktname);
  	memset((char *)key.contents, 0, key.length);
--- 825,832 ----
  	fwrite(argv[i], strlen(argv[i]) + 1, 1, fout); /* p.name */
  	fwrite(argv[1], strlen(argv[1]) + 1, 1, fout); /* p.instance */
  	fwrite(cur_realm, strlen(cur_realm) + 1, 1, fout); /* p.realm */
! 	kvno = (unsigned char) dbentry.kvno;
! 	fwrite((char *)&kvno, sizeof(kvno), 1, fout);
  	fwrite((char *)key.contents, 8, 1, fout);
  	printf("'%s' added to V4 srvtab '%s'\n", pname, ktname);
  	memset((char *)key.contents, 0, key.length);
--
Ever been sued for patent infringement?
	You will!
And the company that will stick it to you?
	RSA.			-- Hal Finney <hfinney@shell.portal.com>

home help back first fref pref prev next nref lref last post