Package: libpam-krb5
Version: 1.2.0-3
Severity: wishlist
Tags: patch
I added support for creation of renewable credentials (for use with
'kinit -R').
The patch adds the option "renewlifetime" to set the maximal renewable
time for the the ticket. It uses krb5_deltat for setting of the time,
but parse_args still lacks support for reading parameters consisting of
several words. So 'renewlifetime=62d' works, 'renewlifetime="2 hours
fortnight"' does not.
Maybe you want to include this feature.
Thanks,
Holger Mense
-- System Information:
Debian Release: 3.1
Architecture: i386 (i686)
Kernel: Linux 2.6.15.6-client
Locale: LANG=C, [EMAIL PROTECTED] (charmap=ISO-8859-15)
Versions of packages libpam-krb5 depends on:
ii krb5-config 1.6 Configuration files for Kerberos V
ii libc6 2.3.2.ds1-22 GNU C Library: Shared libraries an
ii libcomerr2 1.37-2sarge1 common error description library
ii libkrb53 1.3.6-2sarge2 MIT Kerberos runtime libraries
ii libpam0g 0.76-22 Pluggable Authentication Modules l
-- no debconf information
diff -Naur -x .project -x .cdtproject libpam-krb5.orig/pam_krb5.5
libpam-krb5/pam_krb5.5
--- libpam-krb5.orig/pam_krb5.5 2006-04-03 16:07:17.000000000 +0200
+++ libpam-krb5/pam_krb5.5 2006-04-03 16:34:53.000000000 +0200
@@ -101,6 +101,10 @@
.B forwardable
Obtain forwardable Kerberos credentials for the user.
.TP
+.B renewlifetime=<lifetime>
+Obtain renewable Kerberos credentials for the user, with a total life time of
+.IR lifetime .
+.TP
.B no_ccache
Do not save the obtained credentials in a credentials cache. This is a
useful option if the authentication module is used for services such
diff -Naur -x .project -x .cdtproject libpam-krb5.orig/pam_krb5.h
libpam-krb5/pam_krb5.h
--- libpam-krb5.orig/pam_krb5.h 2006-04-03 16:07:17.000000000 +0200
+++ libpam-krb5/pam_krb5.h 2006-04-03 16:13:33.000000000 +0200
@@ -21,6 +21,7 @@
int try_first_pass;
int use_first_pass;
int forwardable;
+ char *renewlifetime;
int reuse_ccache;
int no_ccache;
int ignore_root;
diff -Naur -x .project -x .cdtproject libpam-krb5.orig/support.c
libpam-krb5/support.c
--- libpam-krb5.orig/support.c 2006-04-03 16:07:17.000000000 +0200
+++ libpam-krb5/support.c 2006-04-03 16:18:15.000000000 +0200
@@ -27,6 +27,7 @@
int i;
memset(&pam_args, 0, sizeof(pam_args));
+ pam_args.renewlifetime = NULL;
for (i = 0; i < argc; i++) {
if (strcmp(argv[i], "debug") == 0)
pam_args.debug = 1;
@@ -36,6 +37,8 @@
pam_args.use_first_pass = 1;
else if (strcmp(argv[i], "forwardable") == 0)
pam_args.forwardable = 1;
+ else if (strncmp(argv[i], "renewlifetime=", 14) == 0)
+ pam_args.renewlifetime = (char *) &argv[i][14];
else if (strcmp(argv[i], "reuse_ccache") == 0)
pam_args.reuse_ccache = 1;
else if (strcmp(argv[i], "no_ccache") == 0)
@@ -181,6 +184,21 @@
if (pam_args.forwardable)
krb5_get_init_creds_opt_set_forwardable(&opts, 1);
+ if (pam_args.renewlifetime)
+ {
+ krb5_deltat rlife;
+ retval = krb5_string_to_deltat(pam_args.renewlifetime, &rlife);
+ if (retval != 0 || rlife == 0) {
+ dlog(ctx, "krb5_string_to_deltat(): %s",
error_message(retval));
+ retval = PAM_SERVICE_ERR;
+ goto done;
+ }
+ else
+ {
+ krb5_get_init_creds_opt_set_renew_life(&opts, rlife);
+ }
+ }
+
if (pam_args.ignore_root && strcmp("root", ctx->name) == 0) {
dlog(ctx, "ignoring root user login");
retval = PAM_SERVICE_ERR;