libdir = '``@LIBDIR@``'
localstatedir = '``@LOCALSTATEDIR@``'
sysconfdir = '``@SYSCONFDIR@``'
+ ccache = '``@CCNAME@``'
+ keytab = '``@KTNAME@``'
+ ckeytab = '``@CKTNAME@``'
elif 'pathsubs' in tags:
# Read configured paths from a file produced by the build system.
execfile('paths.py')
libdir = ':ref:`LIBDIR <paths>`'
localstatedir = ':ref:`LOCALSTATEDIR <paths>`'
sysconfdir = ':ref:`SYSCONFDIR <paths>`'
+ ccache = ':ref:`DEFCCNAME <paths>`'
+ keytab = ':ref:`DEFKTNAME <paths>`'
+ ckeytab = ':ref:`DEFCKTNAME <paths>`'
rst_epilog = '\n'
rst_epilog += '.. |bindir| replace:: %s\n' % bindir
rst_epilog += '.. |libdir| replace:: %s\n' % libdir
rst_epilog += '.. |kdcdir| replace:: %s\\ ``/krb5kdc``\n' % localstatedir
rst_epilog += '.. |sysconfdir| replace:: %s\n' % sysconfdir
+rst_epilog += '.. |ccache| replace:: %s\n' % ccache
+rst_epilog += '.. |keytab| replace:: %s\n' % keytab
+rst_epilog += '.. |ckeytab| replace:: %s\n' % ckeytab
rst_epilog += '''
-.. |ccache| replace:: ``/tmp/krb5cc_<uid>``
-.. |clkeytab| replace:: ``/etc/krb5.client-keytab``
-.. |keytab| replace:: ``/etc/krb5.keytab``
.. |krb5conf| replace:: ``/etc/krb5.conf``
.. |defkeysalts| replace:: ``aes256-cts-hmac-sha1-96:normal aes128-cts-hmac-sha1-96:normal des3-cbc-sha1:normal arcfour-hmac-md5:normal``
.. |defetypes| replace:: ``aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 des3-cbc-sha1 arcfour-hmac-md5 des-cbc-crc des-cbc-md5 des-cbc-md4``
**default_client_keytab_name**
This relation specifies the name of the default keytab for
- obtaining client credentials. The default is |clkeytab|. This
+ obtaining client credentials. The default is |ckeytab|. This
relation is subject to parameter expansion (see below).
**default_keytab_name**
#. The **default_client_keytab_name** profile variable in
:ref:`libdefaults`.
-#. The hardcoded default, ``FILE:``\ |clkeytab|.
+#. The hardcoded default, ``FILE:``\ |ckeytab|.
Berkeley DB library version to be used, override it with this
option. For example, ``DB_LIB=-ldb-3.3``.
+**DEFCCNAME=**\ *ccachename*
+ Override the built-in default credential cache name.
+
+**DEFCKTNAME=**\ *keytabname*
+ Override the built-in default client keytab name.
+
+**DEFKTNAME=**\ *keytabname*
+ Override the built-in default keytab name.
+
**LD=**\ *LINKER*
Use *LINKER* as the default loader if it should be different from
C compiler as specified above.
Specifying **--without-system-verto** will cause the built-in
version of libverto to be used unconditionally.
+**--with-krb5-config=**\ *PATH*
+ Use the krb5-config program at *PATH* to obtain the build-time
+ default credential cache, keytab, and client keytab names. The
+ default is to use ``krb5-config`` from the program path. Specify
+ ``--without-krb5-config`` to disable the use of krb5-config and
+ use the usual built-in defaults.
+
Examples
--------
FILES
-----
-``/tmp/krb5cc_[uid]``
- Default location of Kerberos 5 credentials cache ([*uid*] is the
- decimal UID of the user).
+|ccache|
+ Default location of Kerberos 5 credentials cache
SEE ALSO
FILES
-----
-``/tmp/krb5cc_[uid]``
- default location of Kerberos 5 credentials cache ([*uid*] is the
- decimal UID of the user).
+|ccache|
+ default location of Kerberos 5 credentials cache
|keytab|
default location for the local host's keytab.
FILES
-----
-``/tmp/krb5cc_[uid]``
- Default location of Kerberos 5 credentials cache ([uid] is the
- decimal UID of the user).
+|ccache|
+ Default location of Kerberos 5 credentials cache
|keytab|
Default location for the local host's keytab file.
FILES
-----
-``/tmp/krb5cc_[uid]``
- Default location of Kerberos 5 credentials cache ([*uid*] is the
- decimal UID of the user).
+|ccache|
+ Default location of Kerberos 5 credentials cache
SEE ALSO
FILES
-----
-``/tmp/krb5cc_[uid]``
- Default location of the credentials cache ([*uid*] is the decimal
- UID of the user).
+|ccache|
+ Default location of the credentials cache
SEE ALSO
Description Default Environment
========================== ============================= ====================
Keytab file ``FILE:``\ |keytab| **KRB5_KTNAME**
-Client keytab file ``FILE:``\ |clkeytab| **KRB5_CLIENT_KTNAME**
+Client keytab file ``FILE:``\ |ckeytab| **KRB5_CLIENT_KTNAME**
Kerberos config file |krb5conf|\ ``:``\ **KRB5_CONFIG**
|sysconfdir|\ ``/krb5.conf``
KDC config file |kdcdir|\ ``/kdc.conf`` **KRB5_KDC_PROFILE**
operating system, the paths are generally chosen to match the
operating system's filesystem layout.
-======================= =============== =================== ===============
-Description Symbolic name Custom build path Typical OS path
-======================= =============== =================== ===============
-User programs BINDIR ``/usr/local/bin`` ``/usr/bin``
-Libraries and plugins LIBDIR ``/usr/local/lib`` ``/usr/lib``
-Parent of KDC state dir LOCALSTATEDIR ``/usr/local/var`` ``/var``
-Administrative programs SBINDIR ``/usr/local/sbin`` ``/usr/sbin``
-Alternate krb5.conf dir SYSCONFDIR ``/usr/local/etc`` ``/etc``
-======================= =============== =================== ===============
+========================== ============= =========================== ===========================
+Description Symbolic name Custom build path Typical OS path
+========================== ============= =========================== ===========================
+User programs BINDIR ``/usr/local/bin`` ``/usr/bin``
+Libraries and plugins LIBDIR ``/usr/local/lib`` ``/usr/lib``
+Parent of KDC state dir LOCALSTATEDIR ``/usr/local/var`` ``/var``
+Administrative programs SBINDIR ``/usr/local/sbin`` ``/usr/sbin``
+Alternate krb5.conf dir SYSCONFDIR ``/usr/local/etc`` ``/etc``
+Default ccache name DEFCCNAME ``/tmp/krb5cc_%{UID}`` ``/tmp/krb5cc_%{UID}``
+Default keytab name DEFKTNAME ``/etc/krb5.keytab`` ``/etc/krb5.keytab``
+Default client keytab name DEFCKTNAME ``/etc/krb5.client-keytab`` ``/etc/krb5.client-keytab``
+========================== ============= =========================== ===========================
fi
AC_SUBST(localedir)
+# Build-time default ccache, keytab, and client keytab names. These
+# can be given as variable arguments DEFCCNAME, DEFKTNAME, and
+# DEFCKTNAME. Otherwise, we try to get the OS defaults from
+# krb5-config if we can, or fall back to hardcoded defaults.
+AC_ARG_VAR(DEFCCNAME, [Default ccache name])
+AC_ARG_VAR(DEFKTNAME, [Default keytab name])
+AC_ARG_VAR(DEFCKTNAME, [Default client keytab name])
+AC_ARG_WITH([krb5-config],
+ AC_HELP_STRING([--with-krb5-config=PATH],
+ [path to existing krb5-config program for defaults]), ,
+ [with_krb5_config=krb5-config])
+if test "x$with_krb5_config" != xno; then
+ if test "x$with_krb5_config" = xyes; then
+ with_krb5_config=krb5-config
+ fi
+ if $with_krb5_config --help 2>&1 | grep -q defccname; then
+ AC_MSG_NOTICE([Using $with_krb5_config for build defaults])
+ : "${DEFCCNAME=`$with_krb5_config --defccname`}"
+ : "${DEFKTNAME=`$with_krb5_config --defktname`}"
+ : "${DEFCKTNAME=`$with_krb5_config --defcktname`}"
+ fi
+fi
+if test "${DEFCCNAME+set}" != set; then
+ DEFCCNAME=FILE:/tmp/krb5cc_%{uid}
+fi
+: "${DEFKTNAME=FILE:/etc/krb5.keytab}"
+: "${DEFCKTNAME=FILE:/etc/krb5.client-keytab}"
+AC_MSG_NOTICE([Default ccache name: $DEFCCNAME])
+AC_MSG_NOTICE([Default keytab name: $DEFKTNAME])
+AC_MSG_NOTICE([Default client keytab name: $DEFCKTNAME])
+AC_DEFINE_UNQUOTED(DEFCCNAME, ["$DEFCCNAME"], [Define to default ccache name])
+AC_DEFINE_UNQUOTED(DEFKTNAME, ["$DEFKTNAME"], [Define to default keytab name])
+AC_DEFINE_UNQUOTED(DEFCKTNAME, ["$DEFCKTNAME"],
+ [Define to default client keytab name])
+
AC_CONFIG_FILES(krb5-config, [chmod +x krb5-config])
V5_AC_OUTPUT_MAKEFILE(.
#if defined(_WIN32)
#define DEFAULT_PROFILE_FILENAME "krb5.ini"
-#define DEFAULT_KEYTAB_NAME "FILE:%{WINDOWS}\\krb5kt"
-#define DEFAULT_CLIENT_KEYTAB_NAME "FILE:%{WINDOWS}\\krb5clientkt"
#else /* !_WINDOWS */
#if TARGET_OS_MAC
#define DEFAULT_SECURE_PROFILE_PATH "/Library/Preferences/edu.mit.Kerberos:/etc/krb5.conf:@SYSCONFDIR/krb5.conf"
#define DEFAULT_SECURE_PROFILE_PATH "/etc/krb5.conf:@SYSCONFDIR/krb5.conf"
#define DEFAULT_PROFILE_PATH DEFAULT_SECURE_PROFILE_PATH
#endif
-#define DEFAULT_KEYTAB_NAME "FILE:/etc/krb5.keytab"
-#define DEFAULT_CLIENT_KEYTAB_NAME "FILE:/etc/krb5.client-keytab"
#endif /* _WINDOWS */
#define DEFAULT_PLUGIN_BASE_DIR "@LIBDIR/krb5/plugins"
#define THREEPARAMOPEN(x,y,z) open(x,y,z)
+#define DEFKTNAME "FILE:%{WINDOWS}\\krb5kt"
+#define DEFCKTNAME "FILE:%{WINDOWS}\\krb5clientkt"
+
#ifndef KRB5_CALLCONV
#define KRB5_CALLCONV
#endif
\fB\--exec-prefix\fP
prints the exec-prefix with which Kerberos was built.
.TP
+\fB\--defccname\fP
+prints the built-in default credential cache name.
+.TP
+\fB\--defktname\fP
+prints the built-in default keytab name.
+.TP
+\fB\--defcktname\fP
+prints the built-in default client keytab name.
+.TP
\fB\--cflags\fP
prints the compiler flags with which Kerberos was built.
.TP
PROG_RPATH_FLAGS='@PROG_RPATH_FLAGS@'
PTHREAD_CFLAGS='@PTHREAD_CFLAGS@'
DL_LIB='@DL_LIB@'
+DEFCCNAME='@DEFCCNAME@'
+DEFKTNAME='@DEFKTNAME@'
+DEFCKTNAME='@DEFCKTNAME@'
LIBS='@LIBS@'
GEN_LIB=@GEN_LIB@
--cflags)
do_cflags=1
;;
+ --defccname)
+ do_defccname=1
+ ;;
+ --defcktname)
+ do_defcktname=1
+ ;;
+ --defktname)
+ do_defktname=1
+ ;;
--deps)
do_deps=1
;;
done
# If required options - provide help
-if test -z "$do_all" -a -z "$do_version" -a -z "$do_vendor" -a -z "$do_prefix" -a -z "$do_vendor" -a -z "$do_exec_prefix" -a -z "$do_cflags" -a -z "$do_libs"; then
+if test -z "$do_all" -a -z "$do_version" -a -z "$do_vendor" -a \
+ -z "$do_prefix" -a -z "$do_vendor" -a -z "$do_exec_prefix" -a \
+ -z "$do_defccname" -a -z "$do_defktname" -a -z "$do_defcktname" -a \
+ -z "$do_cflags" -a -z "$do_libs"; then
do_help=1
fi
echo " [--vendor] Vendor information"
echo " [--prefix] Kerberos installed prefix"
echo " [--exec-prefix] Kerberos installed exec_prefix"
+ echo " [--defccname] Show built-in default ccache name"
+ echo " [--defktname] Show built-in default keytab name"
+ echo " [--defcktname] Show built-in default client keytab name"
echo " [--cflags] Compile time CFLAGS"
echo " [--libs] List libraries required to link [LIBRARIES]"
echo "Libraries:"
$all_exit
fi
+if test -n "$do_defccname"; then
+ echo "$DEFCCNAME"
+ $all_exit
+fi
+
+if test -n "$do_defktname"; then
+ echo "$DEFKTNAME"
+ $all_exit
+fi
+
+if test -n "$do_defcktname"; then
+ echo "$DEFCKTNAME"
+ $all_exit
+fi
+
if test -n "$do_cflags"; then
if test x"$includedir" != x"/usr/include" ; then
echo "-I${includedir}"
krb5_decrypt_tkt_part
krb5_default_pwd_prompt1
krb5_default_pwd_prompt2
-krb5_defkeyname
krb5_deltat_to_string
krb5_do_preauth
krb5_encode_authdata_container
static void
get_from_os(krb5_context context)
{
- char *name;
-
- if (asprintf(&name, "FILE:/tmp/krb5cc_%ld", (long)getuid()) >= 0)
- context->os_context.default_ccname = name;
+ (void)k5_expand_path_tokens(context, DEFCCNAME,
+ &context->os_context.default_ccname);
}
#endif /* not _WIN32 */
#include "k5-int.h"
#include "os-proto.h"
-extern char *krb5_defkeyname;
-
/* this is a an exceedinly gross thing. */
char *krb5_overridekeyname = NULL;
profile_release_string(str);
return ret;
} else {
- return k5_expand_path_tokens(context, krb5_defkeyname, name_out);
+ return k5_expand_path_tokens(context, DEFKTNAME, name_out);
}
}
profile_release_string(str);
return ret;
} else {
- return k5_expand_path_tokens(context, DEFAULT_CLIENT_KEYTAB_NAME,
- name_out);
+ return k5_expand_path_tokens(context, DEFCKTNAME, name_out);
}
}
#include "k5-int.h"
-char *krb5_defkeyname = DEFAULT_KEYTAB_NAME;
-
unsigned int krb5_max_dgram_size = MAX_DGRAM_SIZE;
const char *krb5_default_pwd_prompt1 = DEFAULT_PWD_STRING1;
GROFF_MAN=$(GROFF) -mtty-char -Tascii -mandoc -c
localstatedir=@localstatedir@
sysconfdir=@sysconfdir@
+DEFCCNAME=@DEFCCNAME@
+DEFKTNAME=@DEFKTNAME@
+DEFCKTNAME=@DEFCKTNAME@
MANSUBS=k5identity.sub k5login.sub k5srvutil.sub kadmin.sub kadmind.sub \
kdb5_ldap_util.sub kdb5_util.sub kdc.conf.sub kdestroy.sub kinit.sub \
-e 's|@SBINDIR@|$(SERVER_BINDIR)|g' \
-e 's|@LIBDIR@|$(KRB5_LIBDIR)|g' \
-e 's|@LOCALSTATEDIR@|$(localstatedir)|g' \
- -e 's|@SYSCONFDIR@|$(sysconfdir)|g' $? > $@
+ -e 's|@SYSCONFDIR@|$(sysconfdir)|g' \
+ -e 's|@CCNAME@|$(DEFCCNAME)|g' \
+ -e 's|@KTNAME@|$(DEFKTNAME)|g' \
+ -e 's|@CKTNAME@|$(DEFCKTNAME)|g' $? > $@
all:: $(MANSUBS)