c74adccd45
protocol. Replaces passwd(1) when eBones is installed. As before, HOW-TO explains the gory details.
248 lines
6.0 KiB
Plaintext
248 lines
6.0 KiB
Plaintext
Here's how to regenerate this from the original eBones:
|
|
|
|
1) Copy kpasswd.c from the admin directory.
|
|
2) perl -spi.bak -e 's/\$(Header[^\$]*)\$/$1/g' *.[ch]
|
|
3) Apply the following patch:
|
|
|
|
*** /home/wollman/kpasswd.orig/kpasswd.c Fri Jan 20 16:01:36 1995
|
|
--- kpasswd.c Fri Jan 20 16:29:57 1995
|
|
***************
|
|
*** 1,10 ****
|
|
/*
|
|
- * $Source: /afs/athena.mit.edu/astaff/project/kerberos/src/kadmin/RCS/kpasswd.c,v $
|
|
- * $Author: jtkohl $
|
|
- *
|
|
* Copyright 1988 by the Massachusetts Institute of Technology.
|
|
*
|
|
* For copying and distribution information, please see the file
|
|
! * <mit-copyright.h>.
|
|
*
|
|
* change your password with kerberos
|
|
--- 1,7 ----
|
|
/*
|
|
* Copyright 1988 by the Massachusetts Institute of Technology.
|
|
*
|
|
* For copying and distribution information, please see the file
|
|
! * Copyright.MIT.
|
|
*
|
|
* change your password with kerberos
|
|
***************
|
|
*** 12,20 ****
|
|
|
|
#ifndef lint
|
|
static char rcsid_kpasswd_c[] =
|
|
"BonesHeader: /afs/athena.mit.edu/astaff/project/kerberos/src/kadmin/RCS/kpasswd.c,v 4.3 89/09/26 09:33:02 jtkohl Exp ";
|
|
#endif lint
|
|
|
|
- #include <mit-copyright.h>
|
|
/*
|
|
* kpasswd
|
|
--- 9,20 ----
|
|
|
|
#ifndef lint
|
|
+ #if 0
|
|
static char rcsid_kpasswd_c[] =
|
|
"BonesHeader: /afs/athena.mit.edu/astaff/project/kerberos/src/kadmin/RCS/kpasswd.c,v 4.3 89/09/26 09:33:02 jtkohl Exp ";
|
|
+ #endif
|
|
+ static const char rcsid[] =
|
|
+ "$Id$";
|
|
#endif lint
|
|
|
|
/*
|
|
* kpasswd
|
|
***************
|
|
*** 28,36 ****
|
|
#include "kadm.h"
|
|
|
|
extern void krb_set_tkt_string();
|
|
|
|
! main(argc,argv)
|
|
! int argc;
|
|
! char *argv[];
|
|
{
|
|
char name[ANAME_SZ]; /* name of user */
|
|
--- 28,38 ----
|
|
#include "kadm.h"
|
|
|
|
+ #include "extern.h"
|
|
+
|
|
extern void krb_set_tkt_string();
|
|
+ static void go_home(char *, int);
|
|
|
|
!
|
|
! int krb_passwd(char *uname, char *iflag, char *rflag, char *uflag)
|
|
{
|
|
char name[ANAME_SZ]; /* name of user */
|
|
***************
|
|
*** 66,74 ****
|
|
default_realm) != KSUCCESS) {
|
|
pw = getpwuid((int) getuid());
|
|
! if (pw)
|
|
! (void) strcpy(default_name, pw->pw_name);
|
|
! else
|
|
/* seems like a null name is kinda silly */
|
|
! (void) strcpy(default_name, "");
|
|
strcpy(default_inst, "");
|
|
if (krb_get_lrealm(default_realm, 1) != KSUCCESS)
|
|
--- 68,77 ----
|
|
default_realm) != KSUCCESS) {
|
|
pw = getpwuid((int) getuid());
|
|
! if (pw) {
|
|
! strcpy(default_name, pw->pw_name);
|
|
! } else {
|
|
/* seems like a null name is kinda silly */
|
|
! strcpy(default_name, "");
|
|
! }
|
|
strcpy(default_inst, "");
|
|
if (krb_get_lrealm(default_realm, 1) != KSUCCESS)
|
|
***************
|
|
*** 76,85 ****
|
|
}
|
|
|
|
! while ((c = getopt(argc, argv, "u:n:i:r:h")) != EOF) {
|
|
! switch (c) {
|
|
! case 'u':
|
|
! if (status = kname_parse(name, inst, realm, optarg)) {
|
|
! fprintf(stderr, "Kerberos error: %s\n", krb_err_txt[status]);
|
|
! exit(2);
|
|
}
|
|
if (realm[0])
|
|
--- 79,85 ----
|
|
}
|
|
|
|
! if(uflag) {
|
|
! if (status = kname_parse(name, inst, realm, uflag)) {
|
|
! errx(2, "Kerberos error: %s", krb_err_txt[status]);
|
|
}
|
|
if (realm[0])
|
|
***************
|
|
*** 88,130 ****
|
|
if (krb_get_lrealm(realm, 1) != KSUCCESS)
|
|
strcpy(realm, KRB_REALM);
|
|
! break;
|
|
! case 'n':
|
|
! if (k_isname(optarg))
|
|
! (void) strncpy(name, optarg, sizeof(name) - 1);
|
|
! else {
|
|
! fprintf(stderr, "Bad name: %s\n", optarg);
|
|
! usage(1);
|
|
! }
|
|
! break;
|
|
! case 'i':
|
|
! if (k_isinst(optarg))
|
|
! (void) strncpy(inst, optarg, sizeof(inst) - 1);
|
|
! else {
|
|
! fprintf(stderr, "Bad instance: %s\n", optarg);
|
|
! usage(1);
|
|
}
|
|
! (void) strcpy(inst, optarg);
|
|
! break;
|
|
! case 'r':
|
|
! if (k_isrealm(optarg)) {
|
|
! (void) strncpy(realm, optarg, sizeof(realm) - 1);
|
|
! realm_given++;
|
|
}
|
|
! else {
|
|
! fprintf(stderr, "Bad realm: %s\n", optarg);
|
|
! usage(1);
|
|
}
|
|
- break;
|
|
- case 'h':
|
|
- usage(0);
|
|
- break;
|
|
- default:
|
|
- usage(1);
|
|
- break;
|
|
- }
|
|
- use_default = 0;
|
|
}
|
|
! if (optind < argc)
|
|
! usage(1);
|
|
|
|
if (use_default) {
|
|
--- 88,119 ----
|
|
if (krb_get_lrealm(realm, 1) != KSUCCESS)
|
|
strcpy(realm, KRB_REALM);
|
|
! }
|
|
!
|
|
! if(uname) {
|
|
! if (k_isname(uname)) {
|
|
! strncpy(name, uname, sizeof(name) - 1);
|
|
! } else {
|
|
! errx(1, "bad name: %s", uname);
|
|
}
|
|
! }
|
|
!
|
|
! if(iflag) {
|
|
! if (k_isinst(iflag)) {
|
|
! strncpy(inst, iflag, sizeof(inst) - 1);
|
|
! } else {
|
|
! errx(1, "bad instance: %s", iflag);
|
|
}
|
|
! }
|
|
!
|
|
! if(rflag) {
|
|
! if (k_isrealm(rflag)) {
|
|
! strncpy(realm, rflag, sizeof(realm) - 1);
|
|
! realm_given++;
|
|
! } else {
|
|
! errx(1, "bad realm: %s", rflag);
|
|
}
|
|
}
|
|
!
|
|
! if(uname || iflag || rflag || uflag) use_default = 0;
|
|
|
|
if (use_default) {
|
|
***************
|
|
*** 132,137 ****
|
|
strcpy(inst, default_inst);
|
|
strcpy(realm, default_realm);
|
|
! }
|
|
! else {
|
|
if (!name[0])
|
|
strcpy(name, default_name);
|
|
--- 121,125 ----
|
|
strcpy(inst, default_inst);
|
|
strcpy(realm, default_realm);
|
|
! } else {
|
|
if (!name[0])
|
|
strcpy(name, default_name);
|
|
***************
|
|
*** 147,153 ****
|
|
if ((status = kadm_init_link("changepw", KRB_MASTER, realm))
|
|
!= KADM_SUCCESS)
|
|
! com_err(argv[0], status, "while initializing");
|
|
else if ((status = kadm_change_pw(new_key)) != KADM_SUCCESS)
|
|
! com_err(argv[0], status, " attempting to change password.");
|
|
|
|
if (status != KADM_SUCCESS)
|
|
--- 135,141 ----
|
|
if ((status = kadm_init_link("changepw", KRB_MASTER, realm))
|
|
!= KADM_SUCCESS)
|
|
! com_err("kpasswd", status, "while initializing");
|
|
else if ((status = kadm_change_pw(new_key)) != KADM_SUCCESS)
|
|
! com_err("kpasswd", status, " attempting to change password.");
|
|
|
|
if (status != KADM_SUCCESS)
|
|
***************
|
|
*** 225,237 ****
|
|
}
|
|
|
|
! usage(value)
|
|
! int value;
|
|
! {
|
|
! fprintf(stderr, "Usage: ");
|
|
! fprintf(stderr, "kpasswd [-h ] [-n user] [-i instance] [-r realm] ");
|
|
! fprintf(stderr, "[-u fullname]\n");
|
|
! exit(value);
|
|
! }
|
|
!
|
|
go_home(str,x)
|
|
char *str;
|
|
--- 213,217 ----
|
|
}
|
|
|
|
! static void
|
|
go_home(str,x)
|
|
char *str;
|